限制字符輸入數(shù)功能(jquery版和原生JS版)
更新時(shí)間:2010年09月10日 13:48:23 作者:
比較常用的限制字符輸入數(shù)功能(比如熱火超天的微博輸入框),用jQuery和原生JavaScript分別寫(xiě)了一個(gè).原生JavaScript注釋中有區(qū)分中英文字符的函數(shù), 但個(gè)人并不建議這么做.
已知BUG:
Ubuntu系統(tǒng)下, onkeyup事件失效,詳見(jiàn): Ubuntu系統(tǒng)下onkeyup/onkeydown對(duì)中文輸入失效bug.
查看演示: 點(diǎn)此查看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');//獲取限制輸入的最大長(zhǎng)度
var tips=document.createElement('span');//新建一個(gè)提示span
var val,cur,count,warn;
submit.disabled=true;//默認(rèn)不可提交
tips.innerHTML='你還可以輸入<em>'+max+'</em>個(gè)字符<font>[不區(qū)分中英文字符數(shù)]</font>';
if(max){
js.onkeyup=js.onchange=function(){
submit.disabled=false;
if(info.lastChild.nodeName!='SPAN') info.appendChild(tips);//避免每次彈起都會(huì)插入一條提示信息
count=info.getElementsByTagName('em')[0];//根據(jù)輸入數(shù)字變換區(qū)
warn=info.getElementsByTagName('font')[0];//副標(biāo)題
val=this.value;
cur=val.length;
// for(var i=0;i<val.length; i++){//此循環(huán)是用來(lái)判斷中英文字符的,但并不建議那樣做
// if(val.charCodeAt(i)>255) cur+=1;
// }
if(cur==0){ //當(dāng)默認(rèn)值長(zhǎng)度為0時(shí),可輸入數(shù)為默認(rèn)maxlength值,此時(shí)不可提交
count.innerHTML = max;
submit.disabled=true;
warn.innerHTML='不區(qū)分中英文字符數(shù)';
}else if (cur < max) {//當(dāng)默認(rèn)值小于限制數(shù)時(shí),可輸入數(shù)為max-cur
count.innerHTML = max - cur;
warn.innerHTML='不區(qū)分中英文字符數(shù)';
}else{
count.innerHTML = 0;//當(dāng)默認(rèn)值大于等于限制數(shù)時(shí),插入一條提示信息并截取限制數(shù)內(nèi)的值
warn.innerHTML='不可再輸入!';
this.value=val.substring(0,max);//此處前面的this.value不能用變量val,它們不再是同一個(gè)值
}
}
}
}
//基于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){//避免每次彈起都會(huì)插入一條提示信息
_info.append('<span>你還可以輸入<em>'+ _max +'</em>個(gè)字符<font>[不區(qū)分中英文字符數(shù)]</font></span>');
}
_val=$(this).val();
_cur=_val.length;
_count=_info.find('em');
_warn=_info.find('font');
if(_cur==0){//當(dāng)默認(rèn)值長(zhǎng)度為0時(shí),可輸入數(shù)為默認(rèn)maxlength值,此時(shí)不可提交
_count.text(_max);
_submit.attr('disabled',true);
}else if(_cur<_max){//當(dāng)默認(rèn)值小于限制數(shù)時(shí),可輸入數(shù)為max-cur
_count.text(_max-_cur);
_warn.text('不區(qū)分中英文字符數(shù)');
}else{//當(dāng)默認(rèn)值大于等于限制數(shù)時(shí),插入一條提示信息并截取限制數(shù)內(nèi)的值
_count.text(0);
_warn.text('不可再輸入!');
$(this).val(_val.substring(0,_max));
}
});
});
在線測(cè)試代碼:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]
Ubuntu系統(tǒng)下, onkeyup事件失效,詳見(jiàn): Ubuntu系統(tǒng)下onkeyup/onkeydown對(duì)中文輸入失效bug.
查看演示: 點(diǎn)此查看DEMO
核心代碼:
復(fù)制代碼 代碼如下:
//原生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');//獲取限制輸入的最大長(zhǎng)度
var tips=document.createElement('span');//新建一個(gè)提示span
var val,cur,count,warn;
submit.disabled=true;//默認(rèn)不可提交
tips.innerHTML='你還可以輸入<em>'+max+'</em>個(gè)字符<font>[不區(qū)分中英文字符數(shù)]</font>';
if(max){
js.onkeyup=js.onchange=function(){
submit.disabled=false;
if(info.lastChild.nodeName!='SPAN') info.appendChild(tips);//避免每次彈起都會(huì)插入一條提示信息
count=info.getElementsByTagName('em')[0];//根據(jù)輸入數(shù)字變換區(qū)
warn=info.getElementsByTagName('font')[0];//副標(biāo)題
val=this.value;
cur=val.length;
// for(var i=0;i<val.length; i++){//此循環(huán)是用來(lái)判斷中英文字符的,但并不建議那樣做
// if(val.charCodeAt(i)>255) cur+=1;
// }
if(cur==0){ //當(dāng)默認(rèn)值長(zhǎng)度為0時(shí),可輸入數(shù)為默認(rèn)maxlength值,此時(shí)不可提交
count.innerHTML = max;
submit.disabled=true;
warn.innerHTML='不區(qū)分中英文字符數(shù)';
}else if (cur < max) {//當(dāng)默認(rèn)值小于限制數(shù)時(shí),可輸入數(shù)為max-cur
count.innerHTML = max - cur;
warn.innerHTML='不區(qū)分中英文字符數(shù)';
}else{
count.innerHTML = 0;//當(dāng)默認(rèn)值大于等于限制數(shù)時(shí),插入一條提示信息并截取限制數(shù)內(nèi)的值
warn.innerHTML='不可再輸入!';
this.value=val.substring(0,max);//此處前面的this.value不能用變量val,它們不再是同一個(gè)值
}
}
}
}
//基于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){//避免每次彈起都會(huì)插入一條提示信息
_info.append('<span>你還可以輸入<em>'+ _max +'</em>個(gè)字符<font>[不區(qū)分中英文字符數(shù)]</font></span>');
}
_val=$(this).val();
_cur=_val.length;
_count=_info.find('em');
_warn=_info.find('font');
if(_cur==0){//當(dāng)默認(rèn)值長(zhǎng)度為0時(shí),可輸入數(shù)為默認(rèn)maxlength值,此時(shí)不可提交
_count.text(_max);
_submit.attr('disabled',true);
}else if(_cur<_max){//當(dāng)默認(rèn)值小于限制數(shù)時(shí),可輸入數(shù)為max-cur
_count.text(_max-_cur);
_warn.text('不區(qū)分中英文字符數(shù)');
}else{//當(dāng)默認(rèn)值大于等于限制數(shù)時(shí),插入一條提示信息并截取限制數(shù)內(nèi)的值
_count.text(0);
_warn.text('不可再輸入!');
$(this).val(_val.substring(0,_max));
}
});
});
在線測(cè)試代碼:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁(yè)面才能執(zhí)行]
您可能感興趣的文章:
- 限制上傳文件大小和格式的jQuery插件實(shí)例
- jQuery實(shí)現(xiàn)限制textarea文本框輸入字符數(shù)量的方法
- JQuery限制復(fù)選框checkbox可選中個(gè)數(shù)的方法
- 3種Jquery限制文本框只能輸入數(shù)字字母的方法
- jquery限制輸入字?jǐn)?shù),并提示剩余字?jǐn)?shù)實(shí)現(xiàn)代碼
- 基于jquery的inputlimiter 實(shí)現(xiàn)字?jǐn)?shù)限制功能
- jQuery maxlength文本字?jǐn)?shù)限制插件
- jQuery實(shí)現(xiàn)圖片加載完成后改變圖片大小的方法
- 基于jquery實(shí)現(xiàn)的上傳圖片及圖片大小驗(yàn)證、圖片預(yù)覽效果代碼
- 基于jQuery的圖片大小自動(dòng)適應(yīng)實(shí)現(xiàn)代碼
- jQuery限制圖片大小的方法
相關(guān)文章
jquery獲取ASP.NET服務(wù)器端控件dropdownlist和radiobuttonlist生成客戶(hù)端HTML標(biāo)簽
jquery獲取ASP.NET服務(wù)器端控件dropdownlist和radiobuttonlist生成客戶(hù)端HTML標(biāo)簽后的value和text值2010-06-06用JQuery在網(wǎng)頁(yè)中實(shí)現(xiàn)分隔條功能的代碼
在C/S系統(tǒng)中有專(zhuān)門(mén)的分隔條控件,很方便實(shí)現(xiàn),但在Asp.net中卻沒(méi)有。本文介紹了一種使用JQuery技術(shù)實(shí)現(xiàn)分隔條的功能2012-08-08用隊(duì)列模擬jquery的動(dòng)畫(huà)算法實(shí)例
這篇文章主要介紹了用隊(duì)列模擬jquery的動(dòng)畫(huà)算法,實(shí)例分析了用隊(duì)列模擬jquery的動(dòng)畫(huà)算法的原理與實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01基于jquery編寫(xiě)的橫向自適應(yīng)幻燈片切換特效的實(shí)例代碼
全屏自適應(yīng)jquery焦點(diǎn)圖切換特效,在IE6這個(gè)蛋疼的瀏覽器兼容性問(wèn)題上得到了和諧,兼容IE6。適用瀏覽器:IE6、IE7、IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗.相關(guān)代碼:2013-08-08如何將 jQuery 從你的 Bootstrap 項(xiàng)目中移除(取而代之使用Vue.js)
Bootstrap是網(wǎng)上最流行的前端開(kāi)發(fā)框架。下面通過(guò)本文給大家分享將 jQuery 從你的 Bootstrap 項(xiàng)目中移除的方法,需要的的朋友參考下吧2017-07-07jQuery實(shí)現(xiàn)圣誕節(jié)禮物動(dòng)畫(huà)案例解析
這篇文章主要介紹了jQuery實(shí)現(xiàn)圣誕節(jié)禮物動(dòng)畫(huà)案例解析的相關(guān)資料,需要的朋友可以參考下2016-12-12