js限制文本框輸入長(zhǎng)度兩種限制方式(長(zhǎng)度、字節(jié)數(shù))
更新時(shí)間:2012年12月19日 09:51:16 作者:
在實(shí)際應(yīng)用中根據(jù)需要會(huì)用到文本框限制字符長(zhǎng)度,以些新手朋友有們可能還不清楚如何應(yīng)付,本人搜集整理了一些常用技巧,曬出來(lái)和大家分享一下,希望可以幫助你們
功能/特點(diǎn):
1.實(shí)時(shí)顯示可輸入的字?jǐn)?shù)(字節(jié)數(shù))
2.兩種限制方式(長(zhǎng)度、字節(jié)數(shù))
3.中文輸入法下可正常使用,無(wú)BUG
4.同一頁(yè)面可以使用多個(gè),相互不干擾
limit.js
function limit(){
var txtNote;//文本框
var txtLimit;//提示字?jǐn)?shù)的input
var limitCount;//限制的字?jǐn)?shù)
var isbyte;//是否使用字節(jié)長(zhǎng)度限制(1漢字=2字符)
var txtlength;//到達(dá)限制時(shí),字符串的長(zhǎng)度
var txtByte;
this.init=function(){
txtNote=this.txtNote;
txtLimit=this.txtLimit;
limitCount=this.limitCount;
isbyte=this.isbyte;
txtNote.onkeydown=function(){wordsLimit()};txtNote.onkeyup=function(){wordsLimit()};
txtLimit.value=limitCount;
}
function wordsLimit(){
var noteCount=0;
if(isbyte){noteCount=txtNote.value.replace(/[^/x00-/xff]/g,"xx").length}else{noteCount=txtNote.value.length}
if(noteCount>limitCount){
if(isbyte){
txtNote.value=txtNote.value.substring(0,txtlength+Math.floor((limitCount-txtByte)/2));
txtByte=txtNote.value.replace(/[^/x00-/xff]/g,"xx").length;
txtLimit.value=limitCount-txtByte;
}else{
txtNote.value=txtNote.value.substring(0,limitCount);
txtLimit.value=0;
}
}else{
txtLimit.value=limitCount-noteCount;
}
txtlength=txtNote.value.length;//記錄每次輸入后的長(zhǎng)度
txtByte=txtNote.value.replace(/[^/x00-/xff]/g,"xx").length;
}
}
頁(yè)面調(diào)用:
<html>
<body>
<input id="txtNote" />
還可輸入<input type="text" id="txtCount" />個(gè)字符
</body>
<mce:script type="text/javascript"><!--
var lim=new limit();
lim.txtNote=document.getElementById("txtNote");
lim.txtLimit=document.getElementById("txtCount");
lim.limitCount=20;
lim.isbyte=true;
lim.init();
// --></mce:script>
</html>
文本框限制字符長(zhǎng)度
<INPUT onkeydown=if(event.keyCode==13)event.keyCode=9 onkeyup="value=value.replace(/[^0-9- ]/g,'');" maxLength=11 >
上面這樣寫只能限制輸入的一定是數(shù)字 和最大長(zhǎng)度為11個(gè)字符 如何限制一定要輸入11位 不能少也不能多
------解決方案--------------------------------------------------------
你確定上面的寫法對(duì)嗎。。。測(cè)試怎么通不過(guò)呢。。
不對(duì)嗎 測(cè)試那里不對(duì) 這個(gè)現(xiàn)在只是限制輸入一定是數(shù)字和11個(gè)字符
------解決方案--------------------------------------------------------
<INPUT onkeydown=if(event.keyCode==13)event.keyCode=9 onkeyup="value=value.replace(/[^0-9- ]/g,'');" maxLength=11 >
上面這樣寫只能限制輸入的一定是數(shù)字 和最大長(zhǎng)度為11個(gè)字符 如何限制一定要輸入11位 不能少也不能多
------解決方案--------------------------------------------------------
<INPUT onkeydown=if(event.keyCode==13)event.keyCode=9 onkeyup="value=value.replace(/[^0-9- ]/g,'');" maxLength=11 >
上面這樣寫只能限制輸入的一定是數(shù)字 和最大長(zhǎng)度為11個(gè)字符 如何限制……
------解決方案--------------------------------------------------------
if(document.form.mobile.value=="")
{
alert("您輸入錯(cuò)誤");
document.forma.mobile.focus();
return false;
}
else
{
if(!/^\d{11}$.test(document.form.mobile.value))
{alert("您輸入數(shù)字的位數(shù)不對(duì)");
document.forma.mobile.focus();
return false;
}
}
不知道這樣行不行。。。
------解決方案--------------------------------------------------------
HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>控制textarea的字符個(gè)數(shù)</title>
<style>
<!--
form{
padding:0px;
margin:0px;
font:14px Arial;
}
input.txt{ /* 文本框單獨(dú)設(shè)置 */
border: 1px inset #00008B;
background-color: #ADD8E6;
}
input.btn{ /* 按鈕單獨(dú)設(shè)置 */
color: #00008B;
background-color: #ADD8E6;
border: 1px outset #00008B;
padding: 1px 2px 1px 2px;
}
-->
</style>
<script language="javascript">
function LessThan(oTextArea){
//返回文本框字符個(gè)數(shù)是否符號(hào)要求的boolean值
return oTextArea.value.length < oTextArea.getAttribute("maxlength");
}
</script>
</head>
<body>
<form method="post" name="myForm1" action="addInfo.aspx">
<p><label for="name">請(qǐng)輸入您的姓名:</label>
<input type="text" name="name" id="name" class="txt" value="姓名" maxlength="10"></p>
<p><label for="comments">我要留言:</label><br>
<textarea name="comments" id="comments" cols="40" rows="4" maxlength="50" onkeypress="return LessThan(this);"></textarea></p>
<p><input type="submit" name="btnSubmit" id="btnSubmit" value="Submit" class="btn">
<input type="reset" name="btnReset" id="btnReset" value="Reset" class="btn"></p>
</form>
</body>
</html>
------解決方案--------------------------------------------------------
HTML code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>電話號(hào)碼檢測(cè) </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="Dsmart">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<body>
電話號(hào)碼:<input id ="phone" type="value" onblur="checkPhone()"/>
<script type="text/javascript">
function checkPhone(){
var phone = document.getElementById("phone").value;
if(phone == ""){
alert("請(qǐng)輸入號(hào)碼");
}else if(!(/^\d{11}$/g.test(phone))){//限制輸入11整數(shù)
//}else if(!(/^13\d{9}$/g.test(phone)||(/^15[0-35-9]\d{8}$/g.test(phone))|| (/^18[05-9]\d{8}$/g.test(phone)))){
//用于檢測(cè)用戶輸入的手機(jī)號(hào)碼是否正確 驗(yàn)證13系列和150-159(154除外)、180、185、186、187、188、189幾種號(hào)碼,長(zhǎng)度11位
alert("請(qǐng)輸入11整數(shù)");
}else{
alert("ok");
}
}
</script>
</body>
</html>
------解決方案--------------------------------------------------------
<INPUT onkeydown=if(event.keyCode==13)event.keyCode=9 onkeyup="value=value.replace(/[^0-9- ]/g,'');" maxLength=11 >
上面這樣寫只能限制輸入的一定是數(shù)字 和最大長(zhǎng)度為11個(gè)字符 如何限制……
這樣是可以有個(gè)提示,但并沒(méi)起到限制作用,,當(dāng)輸入少于11位 還是可以提交的,這個(gè)是不是要用js來(lái)控制的呢
1.實(shí)時(shí)顯示可輸入的字?jǐn)?shù)(字節(jié)數(shù))
2.兩種限制方式(長(zhǎng)度、字節(jié)數(shù))
3.中文輸入法下可正常使用,無(wú)BUG
4.同一頁(yè)面可以使用多個(gè),相互不干擾
limit.js
復(fù)制代碼 代碼如下:
function limit(){
var txtNote;//文本框
var txtLimit;//提示字?jǐn)?shù)的input
var limitCount;//限制的字?jǐn)?shù)
var isbyte;//是否使用字節(jié)長(zhǎng)度限制(1漢字=2字符)
var txtlength;//到達(dá)限制時(shí),字符串的長(zhǎng)度
var txtByte;
this.init=function(){
txtNote=this.txtNote;
txtLimit=this.txtLimit;
limitCount=this.limitCount;
isbyte=this.isbyte;
txtNote.onkeydown=function(){wordsLimit()};txtNote.onkeyup=function(){wordsLimit()};
txtLimit.value=limitCount;
}
function wordsLimit(){
var noteCount=0;
if(isbyte){noteCount=txtNote.value.replace(/[^/x00-/xff]/g,"xx").length}else{noteCount=txtNote.value.length}
if(noteCount>limitCount){
if(isbyte){
txtNote.value=txtNote.value.substring(0,txtlength+Math.floor((limitCount-txtByte)/2));
txtByte=txtNote.value.replace(/[^/x00-/xff]/g,"xx").length;
txtLimit.value=limitCount-txtByte;
}else{
txtNote.value=txtNote.value.substring(0,limitCount);
txtLimit.value=0;
}
}else{
txtLimit.value=limitCount-noteCount;
}
txtlength=txtNote.value.length;//記錄每次輸入后的長(zhǎng)度
txtByte=txtNote.value.replace(/[^/x00-/xff]/g,"xx").length;
}
}
頁(yè)面調(diào)用:
復(fù)制代碼 代碼如下:
<html>
<body>
<input id="txtNote" />
還可輸入<input type="text" id="txtCount" />個(gè)字符
</body>
<mce:script type="text/javascript"><!--
var lim=new limit();
lim.txtNote=document.getElementById("txtNote");
lim.txtLimit=document.getElementById("txtCount");
lim.limitCount=20;
lim.isbyte=true;
lim.init();
// --></mce:script>
</html>
文本框限制字符長(zhǎng)度
復(fù)制代碼 代碼如下:
<INPUT onkeydown=if(event.keyCode==13)event.keyCode=9 onkeyup="value=value.replace(/[^0-9- ]/g,'');" maxLength=11 >
上面這樣寫只能限制輸入的一定是數(shù)字 和最大長(zhǎng)度為11個(gè)字符 如何限制一定要輸入11位 不能少也不能多
------解決方案--------------------------------------------------------
你確定上面的寫法對(duì)嗎。。。測(cè)試怎么通不過(guò)呢。。
不對(duì)嗎 測(cè)試那里不對(duì) 這個(gè)現(xiàn)在只是限制輸入一定是數(shù)字和11個(gè)字符
------解決方案--------------------------------------------------------
復(fù)制代碼 代碼如下:
<INPUT onkeydown=if(event.keyCode==13)event.keyCode=9 onkeyup="value=value.replace(/[^0-9- ]/g,'');" maxLength=11 >
上面這樣寫只能限制輸入的一定是數(shù)字 和最大長(zhǎng)度為11個(gè)字符 如何限制一定要輸入11位 不能少也不能多
------解決方案--------------------------------------------------------
復(fù)制代碼 代碼如下:
<INPUT onkeydown=if(event.keyCode==13)event.keyCode=9 onkeyup="value=value.replace(/[^0-9- ]/g,'');" maxLength=11 >
上面這樣寫只能限制輸入的一定是數(shù)字 和最大長(zhǎng)度為11個(gè)字符 如何限制……
------解決方案--------------------------------------------------------
復(fù)制代碼 代碼如下:
if(document.form.mobile.value=="")
{
alert("您輸入錯(cuò)誤");
document.forma.mobile.focus();
return false;
}
else
{
if(!/^\d{11}$.test(document.form.mobile.value))
{alert("您輸入數(shù)字的位數(shù)不對(duì)");
document.forma.mobile.focus();
return false;
}
}
不知道這樣行不行。。。
------解決方案--------------------------------------------------------
HTML code
復(fù)制代碼 代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>控制textarea的字符個(gè)數(shù)</title>
<style>
<!--
form{
padding:0px;
margin:0px;
font:14px Arial;
}
input.txt{ /* 文本框單獨(dú)設(shè)置 */
border: 1px inset #00008B;
background-color: #ADD8E6;
}
input.btn{ /* 按鈕單獨(dú)設(shè)置 */
color: #00008B;
background-color: #ADD8E6;
border: 1px outset #00008B;
padding: 1px 2px 1px 2px;
}
-->
</style>
<script language="javascript">
function LessThan(oTextArea){
//返回文本框字符個(gè)數(shù)是否符號(hào)要求的boolean值
return oTextArea.value.length < oTextArea.getAttribute("maxlength");
}
</script>
</head>
<body>
<form method="post" name="myForm1" action="addInfo.aspx">
<p><label for="name">請(qǐng)輸入您的姓名:</label>
<input type="text" name="name" id="name" class="txt" value="姓名" maxlength="10"></p>
<p><label for="comments">我要留言:</label><br>
<textarea name="comments" id="comments" cols="40" rows="4" maxlength="50" onkeypress="return LessThan(this);"></textarea></p>
<p><input type="submit" name="btnSubmit" id="btnSubmit" value="Submit" class="btn">
<input type="reset" name="btnReset" id="btnReset" value="Reset" class="btn"></p>
</form>
</body>
</html>
------解決方案--------------------------------------------------------
HTML code
復(fù)制代碼 代碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>電話號(hào)碼檢測(cè) </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="Dsmart">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<body>
電話號(hào)碼:<input id ="phone" type="value" onblur="checkPhone()"/>
<script type="text/javascript">
function checkPhone(){
var phone = document.getElementById("phone").value;
if(phone == ""){
alert("請(qǐng)輸入號(hào)碼");
}else if(!(/^\d{11}$/g.test(phone))){//限制輸入11整數(shù)
//}else if(!(/^13\d{9}$/g.test(phone)||(/^15[0-35-9]\d{8}$/g.test(phone))|| (/^18[05-9]\d{8}$/g.test(phone)))){
//用于檢測(cè)用戶輸入的手機(jī)號(hào)碼是否正確 驗(yàn)證13系列和150-159(154除外)、180、185、186、187、188、189幾種號(hào)碼,長(zhǎng)度11位
alert("請(qǐng)輸入11整數(shù)");
}else{
alert("ok");
}
}
</script>
</body>
</html>
------解決方案--------------------------------------------------------
復(fù)制代碼 代碼如下:
<INPUT onkeydown=if(event.keyCode==13)event.keyCode=9 onkeyup="value=value.replace(/[^0-9- ]/g,'');" maxLength=11 >
上面這樣寫只能限制輸入的一定是數(shù)字 和最大長(zhǎng)度為11個(gè)字符 如何限制……
這樣是可以有個(gè)提示,但并沒(méi)起到限制作用,,當(dāng)輸入少于11位 還是可以提交的,這個(gè)是不是要用js來(lái)控制的呢
相關(guān)文章
詳解JavaScript中setSeconds()方法的使用
這篇文章主要介紹了詳解JavaScript中setSeconds()方法的使用,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06JavaScript CSS修改學(xué)習(xí)第六章 拖拽
這是一個(gè)簡(jiǎn)單可用的拖拽代碼。用鼠標(biāo)和鍵盤都可以操作。2010-02-02詳解Javascript函數(shù)聲明與遞歸調(diào)用
本篇文章詳細(xì)的介紹了Javascript函數(shù)聲明與遞歸調(diào)用,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下。2016-10-10