php前台限制输入text字符,限制字符输入数功能(jquery版和原生JS版)

比较常用的限制字符输入数功能(比如热火超天的微博输入框),用jquery和原生JavaScript分别写了一个.原生JavaScript注释中有区分中英文字符的函数, 但个人并不建议这么做.

已知BUG:

Ubuntu系统下, onkeyup事件失效,详见: Ubuntu系统下onkeyup/onkeydown对中文输入失效bug.

查看演示: 点此查看DEMO

核心代码:

复制代码 代码如下:

//原生JavaScript版本

window.οnlοad=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.οnkeyup=js.οnchange=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 < 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('你还可以输入'+ _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));

}

});

});

在线测试代码:

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

Mr.Think的个人博客

@专注前端技术,热爱PHP,崇尚简单生活.

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

原生JavaScript版本

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

基于jQuery版本

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值