js限制文本框输入长度两种限制方式(长度、字节数)

功能/特点

  1.实时显示可输入的字数(字节数)

  2.两种限制方式(长度、字节数)

  3.中文输入法下可正常使用,无BUG

  4.同一页面可以使用多个,相互不干扰

  limit.js

  

复制代码 代码如下:

  function limit(){

  var txtNote;//文本框

  var txtLimit;//提示字数的input

  var limitCount;//限制的字数

  var isbyte;//是否使用字节长度限制(1汉字=2字符)

  var txtlength;//到达限制时,字符串的长度

  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;//记录每次输入后的长度

  txtByte=txtNote.value.replace(/[^/x00-/xff]/g,"xx").length;

  }

  }

  页面调用:

  

复制代码 代码如下:

  <html>

  <body>

  <input id="txtNote" />

  还可输入<input type="text" id="txtCount" />个字符

  </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>

  文本框限制字符长度

  

复制代码 代码如下:

  <INPUT onkeydown=if(event.keyCode==13)event.keyCode=9 onkeyup="value=value.replace(/[^0-9- ]/g,'');" maxLength=11 >

  上面这样写只能限制输入的一定是数字 和最大长度为11个字符 如何限制一定要输入11位 不能少也不能多

  ------解决方案--------------------------------------------------------

  你确定上面的写法对吗。。。测试怎么通不过呢。。

  不对吗 测试那里不对 这个现在只是限制输入一定是数字和11个字符

  ------解决方案--------------------------------------------------------

  

复制代码 代码如下:

  <INPUT onkeydown=if(event.keyCode==13)event.keyCode=9 onkeyup="value=value.replace(/[^0-9- ]/g,'');" maxLength=11 >

  上面这样写只能限制输入的一定是数字 和最大长度为11个字符 如何限制一定要输入11位 不能少也不能多

  ------解决方案--------------------------------------------------------

  

复制代码 代码如下:

  <INPUT onkeydown=if(event.keyCode==13)event.keyCode=9 onkeyup="value=value.replace(/[^0-9- ]/g,'');" maxLength=11 >

  上面这样写只能限制输入的一定是数字 和最大长度为11个字符 如何限制……

  ------解决方案--------------------------------------------------------

  

复制代码 代码如下:

  if(document.form.mobile.value=="")

  {

  alert("您输入错误");

  document.forma.mobile.focus();

  return false;

  }

  else

  {

  if(!/^\d{11}$.test(document.form.mobile.value))

  {alert("您输入数字的位数不对");

  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的字符个数</title>

  <style>

  <!--

  form{

  padding:0px;

  margin:0px;

  font:14px Arial;

  }

  input.txt{ /* 文本框单独设置 */

  border: 1px inset #00008B;

  background-color: #ADD8E6;

  }

  input.btn{ /* 按钮单独设置 */

  color: #00008B;

  background-color: #ADD8E6;

  border: 1px outset #00008B;

  padding: 1px 2px 1px 2px;

  }

  -->

  </style>

  <script language="javascript">

  function LessThan(oTextArea){

  //返回文本框字符个数是否符号要求的boolean值

  return oTextArea.value.length < oTextArea.getAttribute("maxlength");

  }

  </script>

  </head>

  <body>

  <form method="post" name="myForm1" action="addInfo.aspx">

  <p><label for="name">请输入您的姓名:</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>电话号码检测 </title>

  <meta name="Generator" content="EditPlus">

  <meta name="Author" content="Dsmart">

  <meta name="Keywords" content="">

  <meta name="Description" content="">

  </head>

  <body>

  电话号码:<input id ="phone" type="value" onblur="checkPhone()"/>

  <script type="text/javascript">

  function checkPhone(){

  var phone = document.getElementById("phone").value;

  if(phone == ""){

  alert("请输入号码");

  }else if(!(/^\d{11}$/g.test(phone))){//限制输入11整数

  //}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)))){

  //用于检测用户输入的手机号码是否正确 验证13系列和150-159(154除外)、180、185、186、187、188、189几种号码,长度11位

  alert("请输入11整数");

  }else{

  alert("ok");

  }

  }

  </script>

  </body>

  </html>

  ------解决方案--------------------------------------------------------

  

复制代码 代码如下:

  <INPUT onkeydown=if(event.keyCode==13)event.keyCode=9 onkeyup="value=value.replace(/[^0-9- ]/g,'');" maxLength=11 >

  上面这样写只能限制输入的一定是数字 和最大长度为11个字符 如何限制……

  这样是可以有个提示,但并没起到限制作用,,当输入少于11位 还是可以提交的,这个是不是要用js来控制的呢