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 相关文章推荐
Jquery中ajax方法data参数的用法小结
Feb 12 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
Mar 24 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
Mar 25 Javascript
jquery实现标签上移、下移、置顶
Apr 26 Javascript
jquery Validation表单验证使用详解
Sep 12 Javascript
基于jQuery实现动态数字展示效果
Aug 12 Javascript
JQuery解析XML的方法小结
Apr 02 Javascript
微信小程序  action-sheet详解及实例代码
Nov 09 Javascript
js单页hash路由原理与应用实战详解
Aug 14 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
Apr 02 Javascript
Angular2实现的秒表及改良版示例
May 10 Javascript
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
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
国外PHP程序员的13个好习惯小结
2012/02/20 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
javascript 写类方式之七
2009/07/05 Javascript
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
只需五句话搞定JavaScript作用域(经典)
2016/07/26 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
python获取中文字符串长度的方法
2018/11/14 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
Python wordcloud库安装方法总结
2020/12/31 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
个人授权委托书范本
2014/04/03 职场文书
少先队活动总结
2014/08/29 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
决心书格式范文
2015/09/23 职场文书