一个基于jquery的文本框记数器


Posted in Javascript onSeptember 19, 2012
/* 
*长度跟踪器 
*v2.1.0 
*bind2Id:用于显示长度变化的元素的id 
*max:最大长度 
*msgWrap:提示信息(必须要有一个"-"占位符) 
*eg:$('#input').lenTracer({bind2Id:'myTracer',max:150,msgWrap:'您还可以输入-个字符'}); 
*author:liujg1015@gmail.com 
*/ 
(function ($) { 
var zw_validate = function (el, option) { 
this.el = $(el); 
this.bindEl = false; 
this.setting = { 
bind2Id: false, 
max: 100, 
msgWrap: '您还可以输入-个字符' 
}; 
if (option) { 
$.extend(this.setting, option); 
this.init(); 
} 
}; 
zw_validate.prototype = { 
init: function () { 
var _this = this; 
this.bindEl = $('#' + this.setting.bind2Id); 
this.el.focus(function () { _this.start(); }).blur(function () { _this.dispose(); }); 
this.el.css({ paddingBottom: 20 }); 
this.initMsg(); 
}, 
initMsg: function () { 
var wrap = this.setting.msgWrap.split('-'); 
this.bindEl.text(this.setting.max - this.count().total).before(wrap[0]).after(wrap[1]); 
}, 
count: function () { 
var _val = this.el.val(); 
var _len = _val.length; 
var _rowCount = 0; 
var _enterLen = 0; 
var _partten = /\n+/g; 
if (_len > 0 && _partten.test(_val)) { 
_enterLen += 3; 
while ((result = _partten.exec(_val)) != null) { 
if ((result.index + 1 + _enterLen) > this.setting.max) { 
break; 
} 
_enterLen += 3; 
} 
_rowCount = _val.match(_partten).length; 
} 
return { total: (_len + _rowCount * 3), enterLen: _enterLen }; 
}, 
start: function () { 
var _this = this; 
_this.timer = setInterval(function () { 
var _val = _this.el.val(); 
var _rlt = _this.count(); 
if (_rlt.total > _this.setting.max) { 
if (_rlt.enterLen > 0) { 
_this.el.val(_val.substr(0, _this.setting.max - _rlt.enterLen)); 
} 
else { 
_this.el.val(_val.substr(0, _this.setting.max)); 
} 
_this.bindEl.text(_this.setting.max - _this.count().total); 
return; 
} 
_this.bindEl.text(_this.setting.max - _rlt.total); 
}, 300); 
}, 
dispose: function () { 
clearInterval(this.timer); 
}, 
restore: function () { 
this.bindEl.text(this.setting.max - this.el.val().length); 
} 
}; 
$.fn.extend({ 
lenTracer: function (option) { 
return new zw_validate(this, option); 
} 
}); 
})(jQuery);

一、上面是计数器的脚本,可将脚本贴到js文件中,然后在html里面添加引用。
<html> 
<head> 
<title>demo</title> 
</head> 
<body> 
<table> 
<tr> 
<td> 
标题 
</td> 
<td> 
<input type="text" id="title" /> 
<span id="titlelen"></span> 
</td> 
</tr> 
<tr> 
<td> 
评论 
</td> 
<td> 
<textarea cols="5" rows="5" id="comment"></textarea> 
<span id="commentlen"></span> 
</td> 
</tr> 
</table> 
<script src="../scripts/jquery.js" type="text/javascript"></script> 
<script src="../scripts/lentracer.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$('#title).lenTracer({ bind2Id: titlelen, max: 50}); 
$('#comment).lenTracer({ bind2Id: commentlen, max: 200, msgWrap: '剩余-字' }); 
}); 
</script> 
</body> 
</html>

二、上面的代码是展示如何使用。
这个计数器是自己用jQuery写的,因此要依赖于jQuery库函数。能计算回车符,因为在textarea里面的回车符提交到后台后是'\r\n'。欢迎批评、指正。
Javascript 相关文章推荐
从Ajax到JQuery Ajax学习
Feb 14 Javascript
javascript:void(0)使用探讨
Aug 27 Javascript
extjs中form与grid交互数据(record)的方法
Aug 29 Javascript
用javascript对一个json数组深度赋值示例
Jul 27 Javascript
使用js画图之正弦曲线
Jan 12 Javascript
JavaScript插件化开发教程 (一)
Jan 27 Javascript
果断收藏9个Javascript代码高亮脚本
Jan 06 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
Mar 22 jQuery
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
Jul 27 Javascript
angular.js实现购物车功能
Oct 23 Javascript
vue中如何使用ztree
Feb 06 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
Sep 14 Javascript
html中的input标签的checked属性jquery判断代码
Sep 19 #Javascript
基于jquery打造的百分比动态色彩条插件
Sep 19 #Javascript
jQuery Ajax提交表单查询获得数据实例代码
Sep 19 #Javascript
基于JQuery的多标签实现代码
Sep 19 #Javascript
一样的table?不一样的table(可编辑状态table)
Sep 19 #Javascript
jQuery学习笔记 获取jQuery对象
Sep 19 #Javascript
jQuery学习笔记 更改jQuery对象
Sep 19 #Javascript
You might like
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
JQuery伸缩导航练习示例
2013/11/13 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
JavaScript中string对象
2015/06/12 Javascript
js+HTML5实现视频截图的方法
2015/06/16 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
JavaScript实现图片拖曳效果
2017/09/08 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
python自动化生成IOS的图标
2018/11/13 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
python爬虫增加访问量的方法
2019/08/22 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
给 TensorFlow 变量进行赋值的方式
2020/02/10 Python
numpy库reshape用法详解
2020/04/19 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
旅行社各个岗位职责
2014/03/15 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
银行稽核岗位职责
2015/04/13 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
禁毒主题班会教案
2015/08/14 职场文书
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android