Heim  >  Artikel  >  Web-Frontend  >  限制字符输入数功能(jquery版和原生JS版)_jquery

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

WBOY
WBOYOriginal
2016-05-16 18:20:081088Durchsuche

已知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='你还可以输入'+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;i// if(val.charCodeAt(i)>255) cur+=1;
// }
if(cur==0){ //当默认值长度为0时,可输入数为默认maxlength值,此时不可提交
count.innerHTML = max;
submit.disabled=true;
warn.innerHTML='不区分中英文字符数';
}else if (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()_info.append('你还可以输入'+ _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<_max>_count.text(_max-_cur);
_warn.text('不区分中英文字符数');
}else{//当默认值大于等于限制数时,插入一条提示信息并截取限制数内的值
_count.text(0);
_warn.text('不可再输入!');
$(this).val(_val.substring(0,_max));
}
});
});

在线测试代码:
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn