一个基于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 相关文章推荐
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
Apr 01 Javascript
用javascript实现在小方框中浏览大图的代码
Aug 14 Javascript
IE JS编程需注意的内存释放问题
Jun 23 Javascript
js parentElement和offsetParent之间的区别
Mar 23 Javascript
ie下动态加态js文件的方法
Sep 13 Javascript
jQuery写的日历(包括日历的样式及功能)
Apr 23 Javascript
浏览器窗口加载和大小改变事件示例
Feb 27 Javascript
jquery实现无限分级横向导航菜单的方法
Mar 12 Javascript
javascript中的作用域和闭包详解
Jan 13 Javascript
深入理解vue中的$set
Jun 01 Javascript
jQuery实现键盘回车搜索功能
Jul 25 jQuery
javascript条件式访问属性和箭头函数介绍
Nov 17 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
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
原生JS实现美图瀑布流布局赏析
2015/09/07 Javascript
Jquery实现纵向横向菜单
2016/01/24 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
javascript表单正则应用
2017/02/04 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
vue组件编写之todolist组件实例详解
2018/01/22 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
bootstrap-paginator服务器端分页使用方法详解
2020/02/13 Javascript
Python常用列表数据结构小结
2014/08/06 Python
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
Python实现网站表单提交和模板
2019/01/15 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
医学生个人求职信范文
2013/09/24 职场文书
业务员薪酬管理制度
2014/01/15 职场文书
体育节口号
2014/06/19 职场文书
2014年业务工作总结
2014/11/17 职场文书
青年干部培训班学习心得体会
2016/01/06 职场文书
从np.random.normal()到正态分布的拟合操作
2021/06/02 Python
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers