【问题标题】:How to set the limit for multiline textbox in asp.net如何在asp.net中设置多行文本框的限制
【发布时间】:2014-10-28 07:03:48
【问题描述】:

我正在使用MultiLine Textbox 现在我想允许其中的所有字符,并且我还想将文本框的限制设置为 150 个字符。所以我想使用正则表达式,所以任何人都可以帮助我。 我正在使用这个正则表达式:

"^[A-Za-z0-9\s!@#$%^&*()_+=-`~\\\]\[{}|';:/.,?><]*{1,150}$"

一切正常,但不限制字符数为 150

提前致谢。

【问题讨论】:

    标签: html asp.net regex


    【解决方案1】:

    这样做真的很容易:较新的浏览器支持 textarea 元素上的 maxlength 属性(但不支持 IE9 和旧版本的 Internet Explorer)。

    您可以使用 javascript 限制 textarea,或者如果您想显示“剩余的 x 个字符”(例如在 SO 中发表评论),至少可以获取字符数。

    对于较旧的浏览器,此 javascript 将根据最大长度检查长度并阻止用户输入。但是,由于用户可能会通过复制和粘贴等方式击败keydown 方法,因此使用keyup 截断任何溢出也是一个好主意。此外,如果数据进入服务器/数据库,截断和清理从客户端接收到的输入也不是一个坏主意,以防客户端绕过表单并直接上传 POST 数据,在这种情况下maxlength 无效。

    在 ASP.NET 中,标记类似于:&lt;asp:TextBox ID="txt" runat="server" TextMode="Multiline" ClientIDMode="Static" maxlength="150"/&gt;,但对于 textarea (TextMode="Multiline"),maxlength 属性可能不会呈现(可能取决于您的 ASP.NET 版本)。您可以在标记中验证它是否已呈现。如果没有,您可能需要在代码隐藏中操作 TextBox 的 Attributes,如下所示:txt.Attributes["maxlength"] = "150";(假设为 C#)

    JS Fiddle 示例:http://jsfiddle.net/aymjsfdp/

    // "maxlength" code for older browsers including IE9 and previous versions
    var txt = document.getElementById('txt');
    txt.onkeyup = function () {
        var maxlength = parseInt(this.getAttribute("maxlength")) || 0;
        if (maxlength > 0 && this.value.length > maxlength) {
            this.value = this.value.substring(0, maxlength);
            alert('text was truncated to ' + maxlength + ' characters.');
        }
        document.getElementById('length').innerHTML = this.value.length.toString();
    };
    txt.onkeydown = function () {
        var maxlength = parseInt(this.getAttribute("maxlength")) || 0;
        if (maxlength > 0 && this.value.length >= maxlength && (event.keyCode || event.which) > 49) {
            return false;
        }
    };
    TEXTAREA {
      width: 300px;
      height: 60px;
    }
    <div>Chars: <span id='length'></span>
    </div>
    <textarea id='txt' maxlength='150'></textarea>

    【讨论】:

      【解决方案2】:

      如果 TextMode 属性未设置为 MultiLine,您可以使用 TextBox.MaxLength PropertyMaxLength property does not work for multiline textbox.

      获取或设置文本框中允许的最大字符数。 您设置的值是允许的最大字符数 文本框。默认为0,表示该属性没有 设置。

      <asp:TextBox ID="Value1" Columns="2" MaxLength="3" Text="1" runat="server"/>
      

      如果你想让用户知道他是否超过了 他写的字符,你可以使用附加的javascript函数 按键事件。此函数将测试输入的长度 如果达到最大长度,则取消字符渲染。

      检查一下Set max length of MultiLine TextBox in ASP.Net

      如果您想使用 MultiLine 模式,请使用 java-script 和 RegEx 方式来实现目标,并按照以下参考链接:
      你可以这样做:

      <asp:TextBox Rows="5" Columns="80" ID="txtCommentsForSearch" MaxLength="10" onkeyDown="return checkTextAreaMaxLength(this,event,'10');"  TextMode="multiLine" CssClass="textArea" runat="server"> </asp:TextBox>
      

      //js

      // JScript File
      
      function checkTextAreaMaxLength(textBox, e, length) {
      
          var mLen = textBox["MaxLength"];
          if (null == mLen)
              mLen = length;
      
          var maxLength = parseInt(mLen);
          if (!checkSpecialKeys(e)) {
              if (textBox.value.length > maxLength - 1) {
                  if (window.event)//IE
                  {
                      e.returnValue = false;
                      return false;
                  }
                  else//Firefox
                      e.preventDefault();
              }
          }
      }
      
      function checkSpecialKeys(e) {
          if (e.keyCode != 8 && e.keyCode != 46 && e.keyCode != 35 && e.keyCode != 36 && e.keyCode != 37 && e.keyCode != 38 && e.keyCode != 39 && e.keyCode != 40)
              return false;
          else
              return true;
      }     
      

      参考资料:
      ASP.NET - Limit number of characters in TextBox control
      Limit Number Of Characters In an ASP.NET Multiline TextBox using jQuery
      TextBox: Minimum and Maximum Character Length Validation using ASP.Net RegularExpression Validators
      Limit the number of characters of a textbox
      Specifying maxlength for multiline textbox
      How to set maxlength for multiline TextBox?
      asp text box limit number of characters?

      【讨论】:

        【解决方案3】:

        另一种方式 以下代码可在链接上找到:

        http://www.aspsnippets.com/Articles/Limit-number-of-characters-in-an-ASPNet-Multiline-TextBox-using-jQuery.aspx 带有演示样本

        <title>title>
        
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">script>
        
        <script type="text/javascript" src="MaxLength.min.js">script>
        
        <script type="text/javascript">
        
            $(function () {
        
                //Normal Configuration
        
                $("[id*=TextBox1]").MaxLength({ MaxLength: 10 });
        
        
        
                //Specifying the Character Count control explicitly
        
                $("[id*=TextBox2]").MaxLength(
        
                {
        
                    MaxLength: 15,
        
                    CharacterCountControl: $('#counter')
        
                });
        
        
        
                //Disable Character Count
        
                $("[id*=TextBox3]").MaxLength(
        
                {
        
                    MaxLength: 20,
        
                    DisplayCharacterCount: false
        
                });
        
            });
        
        script>
        

        头>

        <form id="form1" runat="server">
        
        <div id="counter">
        
        div>
        
        <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Width="300" Height="100"
        
            Text="Mudassar Khan">asp:TextBox>
        
        <br />
        
        <br />
        
        <asp:TextBox ID="TextBox2" runat="server" TextMode="MultiLine" Width="300" Height="100">asp:TextBox>
        
        <br />
        
        <br />
        
        <asp:TextBox ID="TextBox3" runat="server" TextMode="MultiLine" Width="300" Height="100">asp:TextBox>
        
        form>
        

        正文>

        html>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-09
          • 2013-12-02
          • 2013-01-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多