一个基于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 相关文章推荐
JObj预览一个JS的框架
Mar 13 Javascript
Web 前端设计模式--Dom重构 提高显示性能
Oct 22 Javascript
yepnope.js使用详解及示例分享
Jun 23 Javascript
分享一则JavaScript滚动条插件源码
Mar 03 Javascript
js改变style样式和css样式的简单实例
Jun 28 Javascript
浅谈jQuery中的checkbox问题
Aug 10 Javascript
web前端开发upload上传头像js示例代码
Oct 22 Javascript
Javascript基础回顾之(一) 类型
Jan 31 Javascript
angular $watch 一个变量的变化(实例讲解)
Aug 02 Javascript
基于javascript中的typeof和类型判断(详解)
Oct 27 Javascript
layui实现数据表格自定义数据项
Oct 26 Javascript
JavaScript实现英语单词题库
Dec 24 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中显示格式化的用户输入
2006/10/09 PHP
php Undefined index的问题
2009/06/01 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
php+redis实现多台服务器内网存储session并读取示例
2017/01/12 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
Python实现快速排序的方法详解
2019/10/25 Python
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
网络工程专业毕业生推荐信
2013/10/28 职场文书
《会变的花树叶》教学反思
2014/02/10 职场文书
经济职业学院毕业生自荐书
2014/03/17 职场文书
入党积极分子自我鉴定范文
2014/03/25 职场文书
岗位说明书怎么写
2014/07/30 职场文书
食品安全承诺书范文
2014/08/29 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
教代会闭幕词
2015/01/28 职场文书
消防隐患整改通知书
2015/04/22 职场文书
初一英语教学反思
2016/02/15 职场文书
索尼ICF-5900W收音机测评
2022/04/24 无线电