就是一个文本框  如果是中文就是5个 英文或数字就是10个  怎么做?

解决方案 »

  1.   


    <script>
    function doit(){
       var v = document.forms[0].txt.value;
       var s = "";
       var n = 0;
       for(var i=0; i<v.length; i++){
          if(v.charCodeAt(i)<256) n++;
          else n += 2;
          if(n<=10) s += v.charAt(i);
          else break;
       }
       alert(s);
    }
    </script>
    <form>
    <input type="text" name="txt"><input type="button" value="xxx" onclick="doit()">
    </form>
      

  2.   

    function getByteCount(str) {
    return str.replace(/[^\x00-\xff]^/, "xx").length;
    }alert(getByteCount("ºº×Öabc"));蹭分。
      

  3.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
      <title> new document </title>
      <script type="text/javascript">
      <!--
      function Test(){
    var count = 0;
    var reg = /[^\x00-\xff]/g;
    var str = document.getElementById("otxt").value;
    var result = str.match(reg)
    for(var i =0;i< str.split("").length;i++){
    count =(str.split("")[i].match(reg)) ? count + 2 : count + 1;
    }
    if(count > 10) alert("too much")
    }

      //-->
      </script>
     </head> <body>
     <input type="text" id="otxt" />
     <input type="button" value="Test" onclick="Test();" />
     </body>
    </html>
      

  4.   

    short   StrPick(char   *szBuf,short   s16Len)   
      {   
      UCHAR   u8State=0;//0:全字状态   1:半字状态   
      short   i;   
      for(i=0;i<s16Len   &&   szBuf[i]!='\0';i++)   
      {   
      switch(u8State)   
      {   
      case   0:   
      if(szBuf[i]   &   0x80)   
      u8State=1;   
      break;   
      case   1:   
      u8State=0;   
      break;   
      }   
      }   
      if(u8State)   
      {   
      i--;   
      // szBuf[i]='\0';//去除半个汉字   
      }   
      return   i;   
      }
      

  5.   

    String.prototype.Trim = function(){return this.replace(/(^\s*)|(\s*$)/ig,"");}
        function textCounter(field, maxlimit) { 
        if (field.value.Trim().getByteLength() > maxlimit) 
    field.value = field.value.Trim().substring(0, maxlimit); 
    }
    String.prototype.getByteLength=function(){return this.replace(/[^\x00-\xff]/g, "mm").length;};我这样为什么还是可以10个中文?textCounter(文本框ID,10)
      

  6.   

    field.value = field.value.Trim().substring(0, maxlimit); 
    这里maxlimit还是10...
      

  7.   

    高手,学习了
    既然都有数据简单点,是不是可以只要啊:
    var x=substring(document.getElementById("ID号").value,10)
      

  8.   

      function Test(){
        var count = 0;
        var reg = /[^\x00-\xff]/g;
        var str = document.getElementById("otxt").value;
        var result = str.match(reg)
        for(var i =0;i< str.split("").length;i++){
            count =(str.split("")[i].match(reg)) ? count + 2 : count + 1;
        }
    if(count>10){document.getElementById("otxt").value=str.substring(0,10);}
    }这样也是可以输入10个中文
      

  9.   

    你截取的始终是10...当然是会有10个汉字出现啦...
    你应该判断是(还是有?你题目没定好)汉字的时候截5个...
    likeif(汉字){document.getElementById("otxt").value=str.substring(0,5);}
    else{){document.getElementById("otxt").value=str.substring(0,10);}  
      

  10.   

    length 属性和 substring方法都是以字符数来计算的,而不是以字节数。
    支持1楼地
      

  11.   

    <script>
    function getByteCount(str) {
        return str.replace(/[^\x00-\xff]/g, "**").length;
    }
    var value;
    function doit(obj)
    {
    if(getByteCount(obj.value)>12){
    obj.value=value;
    }
    value=obj.value
    }
    </script>
    <input type="text" name="txt" onkeyup="doit(this)" onafterpaste="doit(this)">