input 和 textarea 输入框最大文字限制的jquery插件


Posted in Javascript onOctober 27, 2011
/* input 和 textarea 最大文字限定插件 
* 修改版, 一个中文表示1一个字, 一个英文半个字; 
* TextLimit - jQuery plugin for counting and limiting characters for input and textarea fields 
* 
* pass '-1' as speed if you don't want the char-deletion effect. (don't just put 0) 
* Example: jQuery("Textarea").textlimit('span.counter',256) 
* 
* $Version: 2009.07.25 +r2 
* Copyright (c) 2009 Yair Even-Or 
* vsync.design@gmail.com 
*/ String.prototype.getBytes = function () { 
var cArr = this.match(/[^\x00-\xff]/ig); 
return this.length + (cArr == null ? 0 : cArr.length); 
}; 
(function(jQuery) { 
jQuery.fn.textlimit=function(counter_el, thelimit, speed) { 
var charDelSpeed = speed || 15; 
var toggleCharDel = speed != -1; 
var toggleTrim = true; 
var that = this[0]; 
var isCtrl = false; 
updateCounter(); 
function updateCounter(){ 
if(typeof that == "object") 
jQuery(counter_el).text(thelimit - Math.ceil(that.value.getBytes()/2)); 
}; 
this.keydown (function(e){ 
if(e.which == 17) isCtrl = true; 
var ctrl_a = (e.which == 65 && isCtrl == true) ? true : false; // detect and allow CTRL + A selects all. 
var ctrl_v = (e.which == 86 && isCtrl == true) ? true : false; // detect and allow CTRL + V paste. 
// 8 is 'backspace' and 46 is 'delete' 
if( this.value.length >= thelimit && e.which != '8' && e.which != '46' && ctrl_a == false && ctrl_v == false) 
e.preventDefault(); 
}) 
.keyup (function(e){ 
updateCounter(); 
if(e.which == 17) 
isCtrl=false; 
if( this.value.length >= thelimit && toggleTrim ){ 
if(toggleCharDel){ 
// first, trim the text a bit so the char trimming won't take forever 
// Also check if there are more than 10 extra chars, then trim. just in case. 
if ( (this.value.length - thelimit) > 10 ) 
that.value = that.value.substr(0,thelimit+100); 
var init = setInterval 
( 
function(){ 
if( that.value.length <= thelimit ){ 
init = clearInterval(init); updateCounter() 
} 
else{ 
// deleting extra chars (one by one) 
that.value = that.value.substring(0,that.value.length-1); jQuery(counter_el).text(Math.ceil(that.value.getBytes()/2)); 
} 
} ,charDelSpeed 
); 
} 
else this.value = that.value.substr(0,thelimit); 
} 
}); 
}; 
})(jQuery);
Javascript 相关文章推荐
IE与FireFox的兼容性问题分析
Apr 22 Javascript
基于jQuery制作迷你背词汇工具
Jul 27 Javascript
jQuery动画效果实现图片无缝连续滚动
Jan 12 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
Nov 25 Javascript
vuex实现简易计数器
Oct 27 Javascript
解决IE7中使用jQuery动态操作name问题
Aug 28 jQuery
通过函数作用域和块级作用域看javascript的作用域链
Aug 05 Javascript
vue-router实现编程式导航的代码实例
Jan 19 Javascript
Vue CL3 配置路径别名详解
May 30 Javascript
JS开发 富文本编辑器TinyMCE详解
Jul 19 Javascript
基于ssm框架实现layui分页效果
Jul 27 Javascript
es6函数之rest参数用法实例分析
Apr 18 Javascript
VBS通过WMI监视注册表变动的代码
Oct 27 #Javascript
JavaScript Memoization 让函数也有记忆功能
Oct 27 #Javascript
JavaScript 类型的包装对象(Typed Wrappers)
Oct 27 #Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
Oct 26 #Javascript
JavaScript学习笔记(二) js对象
Oct 25 #Javascript
JavaScript学习笔记(一) js基本语法
Oct 25 #Javascript
jQuery数据显示插件整合实现代码
Oct 24 #Javascript
You might like
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
2018/05/28 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
基于JQuery制作的产品广告效果
2010/12/08 Javascript
jquery实现页面图片等比例放大缩小功能
2014/02/12 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
javascript鼠标滑动评分控件完整实例
2015/05/13 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
Centos7 中安装 Node.js v4.4.4
2016/11/03 Javascript
vue中如何使用ztree
2018/02/06 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
jupyter notebook 重装教程
2020/04/16 Python
python文件读取失败怎么处理
2020/06/23 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
体育专业个人求职信范文
2013/12/27 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
《富饶的西沙群岛》教学反思
2014/04/09 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers