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 相关文章推荐
Web开发之JavaScript
Mar 29 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
May 16 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
Sep 10 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
Jan 26 Javascript
JavaScript仿商城实现图片广告轮播实例代码
Feb 06 Javascript
使用jquery提交form表单并自定义action的实现代码
May 25 Javascript
Angular 页面跳转时传参问题
Aug 01 Javascript
JS基于递归实现倒计时效果的方法
Nov 26 Javascript
AngularJS select加载数据选中默认值的方法
Feb 28 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
Feb 02 Javascript
ES6中Symbol、Set和Map用法详解
Aug 20 Javascript
原生js实现弹窗消息动画
Nov 20 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
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
4种PHP异步执行的常用方式
2015/12/24 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
Python简单生成随机姓名的方法示例
2017/12/27 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
python 弧度与角度互转实例
2020/04/15 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
数据库方面面试题
2012/04/22 面试题
教师自我鉴定范文
2014/03/20 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
三方协议书
2015/01/27 职场文书
努力学习保证书
2015/02/26 职场文书
学校通报表扬范文
2015/05/04 职场文书
朋友聚会开场白
2015/06/01 职场文书
科技馆观后感
2015/06/08 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL