一个基于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 相关文章推荐
利用404错误页面实现UrlRewrite的实现代码
Aug 20 Javascript
js取得url地址参数实例
Feb 22 Javascript
AngularJS基础学习笔记之表达式
May 10 Javascript
详解javascript实现瀑布流绝对式布局
Jan 29 Javascript
JavaScript手机振动API
Jun 11 Javascript
HTML Table 空白单元格补全的简单实现
Oct 13 Javascript
Javascript 实现简单计算器实例代码
Oct 23 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
Jul 19 Javascript
vue实现个人信息查看和密码修改功能
May 06 Javascript
JS实现的3des+base64加密解密算法完整示例
May 18 Javascript
Vue点击切换颜色的方法
Sep 13 Javascript
关于angular引入ng-zorro的问题浅析
Sep 09 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
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
php中的路径问题与set_include_path使用介绍
2014/02/11 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
php实现通过ftp上传文件
2015/06/19 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中内建函数的简单用法说明
2016/05/05 Python
python分布式编程实现过程解析
2019/11/08 Python
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
幼儿园教师培训方案
2014/02/04 职场文书
会计自荐信范文
2014/03/09 职场文书
安全生产责任书范本
2014/04/15 职场文书
家庭教育的心得体会
2014/09/01 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
三严三实心得体会范文
2014/10/13 职场文书
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
sass 常用备忘案例详解
2021/09/15 HTML / CSS