if(sysname.length >0&&sysname.length>100)
  {
   alert("系统名称输入有误,最长不超过100个非中文字符!");
   document.frm.sysname.focus();
   return false;
  }我用的是这个方法,可是我可以输入超过50个的中文字符节

解决方案 »

  1.   

    temp=sysname
    temp=temp.replace(/[\u4e00-\u9fa5]/g,"**")
    if(temp.length >0&&temp.length>100)
      {
       alert("系统名称输入有误,最长不超过100个非中文字符!");
       document.frm.sysname.focus();
       return false;
      }
      

  2.   

    呵呵上面的方法不错了。检查字符长度和限制字符长度都大同小异
    <script> 
      String.prototype.len=function()   
      {   
              return   this.replace(/[^\x00-\xff]/g,"**").length;   
      }   
      var   str="joycenter的字符串";   
      alert(str.len()); 
    </script>
    首先把所有单字节的字符替换成双字节。然后获取字符串的长度length
    注意string.length是获取字符串中字符的长度,而不是字符串所占的字节数了。
    joycenter的字符串 的字节数为17,其中9个英文字符(单字节) 4个中文字符(双字节)
    joycenter的字符串 的字符数为13纠正一下你的错误了是 大于0 且 小于等于100 (不是 大于100)。
    if(sysname.length >0 && sysname.length <= 100)
    {
    alert("系统名称输入有误,最长不超过100个非中文字符!");
    document.frm.sysname.focus();
    return false;
    }我用的是这个方法,可是我可以输入超过50个的中文字符节
    你弄清楚中文字符串的字符数  和 中文字符串的字节数的区别了。
    如果是限制100个字节的 字符串就要加一点东西
    sysname = sysname.replace(/[^\x00-\xff]/g,"**").length;
    if(sysname.length >0 && sysname.length <= 100)
    {
    alert("系统名称输入有误,最长不超过100个非中文字符!");
    document.frm.sysname.focus();
    return false;
    }
    如果是限制50个字符的就写成sysname.length <= 50 了
    关键是弄清楚概念,呵呵
      

  3.   

    用正则表达式,加string.length来规范