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 相关文章推荐
JavaScript 原型链学习总结
Oct 29 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
Feb 03 Javascript
jQuery图片的展开和收缩实现代码
Apr 16 Javascript
jquery ztree实现下拉树形框使用到了json数据
May 14 Javascript
JavaScript之Object类型介绍
Apr 01 Javascript
javascript中DOM复选框选择用法实例
May 14 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
Nov 30 Javascript
谈谈AngularJs中的隐藏和显示
Dec 09 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
Jun 08 Javascript
简单实现js点击展开二级菜单功能
May 16 Javascript
JS错误处理与调试操作实例分析
Apr 13 Javascript
JS实现简易图片自动轮播
Oct 16 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
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
老生常谈 js中this的指向
2016/06/30 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
基于vue实现圆形菜单栏组件
2019/07/05 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
iview实现图片上传功能
2020/06/29 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
python实现人脸识别代码
2017/11/08 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
村委会贫困证明
2014/01/14 职场文书
护士见习期自我鉴定
2014/02/08 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
尊师重教主题班会
2015/08/14 职场文书
导游词之神仙居景区
2019/11/15 职场文书
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android