程序开发 > C# > 正文

textbox、textarea多行文本文字长度限制

亮术网 2014-01-11 本网原创

  textbox 设置为多行显示解析后就变成了 textarea,在textbox多行显示模式下,属性 MaxLenght 失效,所以得用 Javascript(js)来检查输入文本字符串的长度。如果是单纯的中文或英文很容易判断,关键是中英文混合的情况,需要把中文和英文区别开判断它们的长度。

  这也涉及到字符编码问题,根据字符编码范围区别是中文还是英文,这主要由 js 来判断,了解这些后就看具体的实例。

 

  textbox多行显示:

  <div>
    文本文字长度测试:<asp:TextBox ID="tbTest" runat="server" TextMode="MultiLine" />
    <asp:Button ID="btn" runat="server" OnClientClick="CheckText()" Text="提交" />
  </div>

  textbox解析后变为textarea:

  文本文字长度测试:<textarea name="tbTest" rows="2" cols="20" id="tbTest">

 

  js统计输入中英文字符串长度和 textarea 长度限制代码:

  <script type="text/javascript">
    function getTextLength(text) {
      var length = 0;
      for (var i = 0; i < text.length; i++) {
        if (text.charCodeAt(i) > 127 || text.charCodeAt(i) == 94) {
          length += 2;
        } else {
          length++;
        }
      }
      return length;
    }

    function CheckText() {
      var val = document.getElementById("tbTest").value;
      var length = getTextlengths(val);

      if(length > 500){
        alert("输入文本不能大于500!");
        return;
      }
    }
  </script>

  getTextLength(text)方法是通过把字符转为 ASCII 码,再根据中文在 ASCII 码中的范围确定是中文还是英文。如果是中文,长度加2,否则长度加1。

 

  此外,还有另外一种简单的统计中英文字符串长度方法:

  function getTextlengths(text) {
    return text.replace(/[^\x00-\xff]/g, "**").length;
  }

  该方法是用两个*取代中文,然后再返回字符串的长度,写法十分简单。