限制字符输入数功能(jquery版和原生JS版)

已知BUG:
Ubuntu系统下, onkeyup事件失效,详见: Ubuntu系统下onkeyup/onkeydown对中文输入失效bug.
查看演示: 点此查看DEMO
核心代码:


代码如下:

//原生JavaScript版本
window.onload=function(){
var js=document.getElementById('js');//获取文本域
var info=document.getElementsByTagName('p')[0];//获取要插入提示信息的元素
var submit=info.getElementsByTagName('input')[0];//获取提交按钮
var max=js.getAttribute('maxlength');//获取限制输入的最大长度
var tips=document.createElement('span');//新建一个提示span
var val,cur,count,warn;
submit.disabled=true;//默认不可提交
tips.innerHTML='你还可以输入<em>'+max+'</em>个字符<font>[不区分中英文字符数]</font>';
if(max){
js.onkeyup=js.onchange=function(){
submit.disabled=false;
if(info.lastChild.nodeName!='SPAN') info.appendChild(tips);//避免每次弹起都会插入一条提示信息
count=info.getElementsByTagName('em')[0];//根据输入数字变换区
warn=info.getElementsByTagName('font')[0];//副标题
val=this.value;
cur=val.length;
// for(var i=0;i<val.length; i++){//此循环是用来判断中英文字符的,但并不建议那样做
// if(val.charCodeAt(i)>255) cur+=1;
// }
if(cur==0){ //当默认值长度为0时,可输入数为默认maxlength值,此时不可提交
count.innerHTML = max;
submit.disabled=true;
warn.innerHTML='不区分中英文字符数';
}else if (cur < max) {//当默认值小于限制数时,可输入数为max-cur
count.innerHTML = max - cur;
warn.innerHTML='不区分中英文字符数';
}else{
count.innerHTML = 0;//当默认值大于等于限制数时,插入一条提示信息并截取限制数内的值
warn.innerHTML='不可再输入!';
this.value=val.substring(0,max);//此处前面的this.value不能用变量val,它们不再是同一个值
}
}
}
}
//基于jQuery版本
$(function(){
var _area=$('textarea#jq');
var _info=_area.next();
var _submit=_info.find(':submit');
var _max=_area.attr('maxlength');
var _val,_cur,_count,_warn;
_submit.attr('disabled',true);
_area.bind('keyup change',function(){ //绑定keyup和change事件
_submit.attr('disabled',false);
if(_info.find('span').size()<1){//避免每次弹起都会插入一条提示信息
_info.append('<span>你还可以输入<em>'+ _max +'</em>个字符<font>[不区分中英文字符数]</font></span>');
}
_val=$(this).val();
_cur=_val.length;
_count=_info.find('em');
_warn=_info.find('font');

if(_cur==0){//当默认值长度为0时,可输入数为默认maxlength值,此时不可提交
_count.text(_max);
_submit.attr('disabled',true);
}else if(_cur<_max){//当默认值小于限制数时,可输入数为max-cur
_count.text(_max-_cur);
_warn.text('不区分中英文字符数');
}else{//当默认值大于等于限制数时,插入一条提示信息并截取限制数内的值
_count.text(0);
_warn.text('不可再输入!');
$(this).val(_val.substring(0,_max));
}
});
});

在线测试代码:

限制字符输入数功能(jQ版和原生JS版)@Mr.Think

/*reset css*/
body{font-size:0.8em;letter-spacing:1px;font-family:"Microsoft YaHei"; line-height:1.8em}
div,h2,p,fieldset,legend,form,textarea,span,em,sub{margin:0;padding:0}
input{font:12px/1.5 tahoma,arial,sans-serif; vertical-align:middle;}
h1{font-size:1em; font-weight:normal;}
h1 a{background:#047; padding:2px 3px; color:#fff; text-decoration:none;}
h1 a:hover{background:#a40000; color:#fff; text-decoration:underline}
h3{color:#888; font-weight:bold;font-size:1em; margin:1em auto; position:relative}
/*demo css*/
fieldset{border:1px solid #ccc;width:720px}
fieldset legend{ background:#a40000; color:#fff;text-align:center; padding:0 8px; margin-left:25px}
fieldset form{background:#eee; border:1px solid #ccc;margin:10px; padding:10px 10px 0}
fieldset form textarea{width:670px; height:60px; border:1px solid #ccc; line-height:25px; padding:3px;overflow:hidden;}
fieldset form textarea:focus{border:1px solid #a40000}
fieldset form p{height:30px; margin:2px 0;*margin:3px 0 3px -5px}
fieldset form p span{padding-left:8px}
fieldset form p span em{font-style:normal; font-weight:bolder; color:#047; padding:0 3px}
fieldset form p span font{color:blue; font-size:10px}

/*******************************
* @author Mr.Think
* @author blog http://mrthink.net/
* @2010.09.07
* @可自由转载及使用,但请注明版权归属
*******************************/
//原生JavaScript版本
window.onload=function(){
var js=document.getElementById('js');//获取文本域
var info=document.getElementsByTagName('p')[0];//获取要插入提示信息的元素
var submit=info.getElementsByTagName('input')[0];//获取提交按钮
var max=js.getAttribute('maxlength');//获取限制输入的最大长度
var tips=document.createElement('span');//新建一个提示span
var val,cur,count,warn;
submit.disabled=true;//默认不可提交
tips.innerHTML='你还可以输入'+max+'个字符[不区分中英文字符数]';
if(max){
js.onkeyup=js.onchange=function(){
submit.disabled=false;
if(info.lastChild.nodeName!='SPAN') info.appendChild(tips);//避免每次弹起都会插入一条提示信息
count=info.getElementsByTagName('em')[0];//根据输入数字变换区
warn=info.getElementsByTagName('font')[0];//副标题
val=this.value;
cur=val.length;
// for(var i=0;i255) cur+=1;
// }
if(cur==0){ //当默认值长度为0时,可输入数为默认maxlength值,此时不可提交
count.innerHTML = max;
submit.disabled=true;
warn.innerHTML='不区分中英文字符数';
}else if (cur 你还可以输入'+ _max +'个字符[不区分中英文字符数]');
}
_val=$(this).val();
_cur=_val.length;
_count=_info.find('em');
_warn=_info.find('font');

if(_cur==0){//当默认值长度为0时,可输入数为默认maxlength值,此时不可提交
_count.text(_max);
_submit.attr('disabled',true);
}else if(_cur

Mr.Think的个人博客
@专注前端技术,热爱PHP,崇尚简单生活.

返回文章页:限制字符输入数功能(jQ版和原生JS版)@Mr.Think

原生JavaScript版本

» 我是用来隔行的,别理我^-^

基于jQuery版本

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

(0)

相关推荐

  • 3种Jquery限制文本框只能输入数字字母的方法

    onlyNum(),onlyAlpha()和onlyNumAlpha()3个Jquery扩展方法 number.js 复制代码 代码如下: // ---------------------------------------------------------------------- // <summary> // 限制只能输入数字 // </summary> // ---------------------------------------------------------

  • JQuery限制复选框checkbox可选中个数的方法

    本文实例讲述了JQuery限制复选框checkbox可选中个数的方法.分享给大家供大家参考.具体分析如下: 由于项目需要限制可批量操作的文件个数 所以写了一段小代码 如果选中个数大于允许的最大个数 其他复选框不能选择 如果小于则所有复选框都能选择 <script type="text/javascript"> $(document).ready(function() { $('input[type=checkbox]').click(function() { $("

  • 基于jquery的inputlimiter 实现字数限制功能

    看下效果图: 源代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en&qu

  • 限制上传文件大小和格式的jQuery插件实例

    本文实例讲述了限制上传文件大小和格式的jQuery插件.分享给大家供大家参考.具体分析如下: 在客户端上传文件,通常需要限制文件的尺寸和格式,最常用的做法是使用某款插件,一些成熟的插件的确界面好看,且功能强大,但美中不足的是:有时候会碰到浏览器兼容问题.本篇就来写一个"原生态"的jQuery插件,使之能限制上传文件的大小和格式. 首先,写一个名称为checkFileTypeAndSize.js的插件.通过判断当前文件的后缀名是否被包含在预先设置所允许的后缀名数组中,来限制文件格式:通过

  • 基于jQuery的图片大小自动适应实现代码

    关于 这个和以前弄的图片远处放大有许多相同的地方,比如图片预加载.有限容器显示无限大图片. 大小计算:内外两个比例. 复制代码 代码如下: // 容器比例和图片比例 var dr = dw/dh, ir = iw/ih; if(dr>ir){ ih = dh; iw = ih * ir; }else{ iw = dw; ih = iw / ir; } 居中显示:CSS绝对定位,负边距. 复制代码 代码如下: $img.css({width:iw,height:ih,position:'absol

  • jQuery限制图片大小的方法

    本文实例讲述了jQuery限制图片大小的方法.分享给大家供大家参考,具体如下: 最近在搞一个信息网站,文章内容中可以显示图片,所以就需要限制用户贴进去的图片的显示大小了. 在网上找到一段代码: $(document).ready(function(){ $("#viewnews_body img").each(function(){ var width = 620; var height = 600; var image = $(this); if (image.width() >

  • jquery限制输入字数,并提示剩余字数实现代码

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

  • jQuery实现图片加载完成后改变图片大小的方法

    本文实例讲述了jQuery实现图片加载完成后改变图片大小的方法.分享给大家供大家参考,具体如下: 要改变图片的大小并不难,可以用jQuery操作css改变.但是前提是要判断图片是否加载完成.主要是通过jQuery的load事件和onreadystatechange来判断其状态. 对于IE6,用onreadystatechange可以直接处理,在IE7中,则需要用定时器来判断图片的readystate状态.而对于FF和Chrome刚可以直接用load事件来判断. 以下是在实例中使用的完整代码: <

  • 基于jquery实现的上传图片及图片大小验证、图片预览效果代码

    jquery实现上传图片及图片大小验证.图片预览效果代码 上传图片验证 复制代码 代码如下: */ function submit_upload_picture(){ var file = $('file_c').value; if(!/.(gif|jpg|jpeg|png|gif|jpg|png)$/.test(file)){ alert("图片类型必须是.gif,jpeg,jpg,png中的一种") }else{ $('both_form').action="file!u

  • jQuery maxlength文本字数限制插件

    实现这个效果有很多方法,这里就介绍一种jQuery插件maxlength,它的使用非常简单,让我们先看看演示: jquery maxlength演示地址演示代码打包下载看看Demo中的重点代码: 1.载入maxlength.js <script type="text/javascript" src="maxlength.js"></script> 2.加入函数,Demo中有3个例子,你可以根据实际需要选择不同的函数,不过最后一个例子对于中文而

  • jQuery实现限制textarea文本框输入字符数量的方法

    本文实例讲述了jQuery实现限制textarea文本框输入字符数量的方法.分享给大家供大家参考.具体实现方法如下: (function($) { $.fn.extend( { limiter: function(limit, elem) { $(this).on("keyup focus", function() { setCount(this, elem); }); function setCount(src, elem) { var chars = src.value.lengt

随机推荐