文本框字符长度的限制

archt 2008-05-26
<script type="text/javascript">

function textListener(obj,lengthLimit)

      var byteLength = 0;  
      var strInput = document.getElementById(obj).value;
     
      for(var i=0;i<strInput.length;i++)
      { 
          var ch = strInput.charAt(i); 
          if(isNormalChar(ch)) 
              byteLength += 1; 
          else 
              byteLength += 2;      
      } 
     
      if(byteLength<lengthLimit)
      {
      document.getElementById(obj).maxLength = lengthLimit;
      }
      if(byteLength>=lengthLimit)
      {
      var str = document.getElementById(obj).value;
      var byteLength2 = 0;
      var temp = "";
      for(var i=0;i<str.length;i++)
      { 
          var ch = str.charAt(i); 
          if(isNormalChar(ch)) 
              byteLength2 += 1; 
          else 
              byteLength2 += 2;
          if(byteLength2>lengthLimit)
          {
            break;
          }
          temp = temp+ch;       
      } 
     
     document.getElementById(obj).maxLength = temp.length;
     document.getElementById(obj).value=temp;
      }  
  } 
  
  function   isNormalChar(ch) 
  { 
      if(ch.length>1){ 
           return false; 
      } 
      if(ch == ""){ 
           return true; 
      } 

      var pattern = /^([\\uFF66-\\uFF9F]|[\\u0000-\\u00FF])*$/gi; 
      if (pattern.test(ch)){ 
           return true; 
      }else{ 
           return false; 
      } 
  } 
</script>
遗憾的是在一次性输入汉字超过限定长度时,文本框字符有一次闪动,请各位大虾指导,谢谢!
qingjian 2008-05-26
....text ;里面有个 maxlength 的属性 设置一下就ok 了
dmewy 2008-05-27
同上!             
archt 2008-05-30
哈哈 maxlength 没用汉字和英文字母的长度不一样,而且在数据库占不同的字符宽度 所以在文本框的长度是变化的!
weiweichen1985 2008-06-04
archt 写道
哈哈 maxlength 没用汉字和英文字母的长度不一样,而且在数据库占不同的字符宽度 所以在文本框的长度是变化的!



是不是汉字在每个数据库中占有的字符也是不同的呢???
刚才测试了下以前的一个小例子
ssh+mysql5.0 
一个表users中一个name字段 类型varchar(20)
我插值的时候  测试了两个汉字值都成功了
一一一一一一一一一一一一一一一一一一一二
一一一一一一一一一一一一一一一一一一一一
这两个汉字用length()获取长度是20啊...
也插进去了。。。
楼上的能说明一下吗???不是说不一样吗???
archt 2008-06-04
主要是看你数据库的字符编码集是什么?
weiweichen1985 2008-06-11
mysql数据库字符编码是gbk
页面编码也是gbk
hax 2008-06-11
archt 写道
哈哈 maxlength 没用汉字和英文字母的长度不一样,而且在数据库占不同的字符宽度 所以在文本框的长度是变化的!


什么叫长度不一样?请问这个长度对用户有什么意义吗?!

当你做一个事情的时候,应该先想想需求到底是否合理。
smalljeff 2008-06-11
代码格式化
archerzz 2008-06-25
archt 写道
哈哈 maxlength 没用汉字和英文字母的长度不一样,而且在数据库占不同的字符宽度 所以在文本框的长度是变化的!

在FF3下试了一下,似乎英文字符和中文字符都算一个的。
Global site tag (gtag.js) - Google Analytics