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 相关文章推荐
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
Dec 02 Javascript
jquery下实现overlay遮罩层代码
Aug 25 Javascript
javascript中万恶的function实例分析
May 25 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
Mar 14 Javascript
三种带箭头提示框总结实例
Jun 14 Javascript
JQuery遍历元素的后代和同胞实现方法
Sep 18 Javascript
jQuery常见的选择器及用法介绍
Dec 20 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
Jan 03 Javascript
React BootStrap用户体验框架快速上手
Mar 06 Javascript
JavaScript callback回调函数用法实例分析
May 08 Javascript
js 实现ajax发送步骤过程详解
Jul 25 Javascript
jQuery AJAX应用实例总结
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中设置时区方法小结
2012/06/03 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
js常用自定义公共函数汇总
2014/01/15 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
js实现日历
2020/11/07 Javascript
微信小程序实现登录注册功能
2020/12/29 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
[03:39]2015国际邀请赛主赛事首日精彩回顾
2015/08/05 DOTA
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
Python日期操作学习笔记
2008/10/07 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
django最快程序开发流程详解
2019/07/19 Python
Pytorch训练过程出现nan的解决方式
2020/01/02 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
python如何求100以内的素数
2020/05/27 Python
英国排名第一的冲浪店:Ann’s Cottage
2020/06/21 全球购物
Java程序员综合测试题
2014/04/25 面试题
销售员自我评价怎么写
2013/09/19 职场文书
幼儿园园长岗位职责
2013/11/26 职场文书
员工晚婚的请假条
2014/02/08 职场文书
个人工作表现评语
2014/04/30 职场文书
事业单位个人总结
2015/02/12 职场文书
简述python四种分词工具,盘点哪个更好用?
2021/04/13 Python
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
MySQ InnoDB和MyISAM存储引擎介绍
2022/04/26 MySQL
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL