【问题标题】:RegularExpressionValidator does not work in asp.netRegularExpressionValidator 在 asp.net 中不起作用
【发布时间】:2014-04-25 05:53:43
【问题描述】:

我想在 asp.net 中设置多行文本框的 MaxLength 属性(例如 100 个字符)。 我不想使用 javascript 解决方案。我用过:

<html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
    <title></title>
  </head>
  <body>
    <form id="form1" runat="server">
    <div>                        
      <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1" SetFocusOnError="true" ValidationExpression="^[a-zA-Z.]{0,100}$"></asp:RegularExpressionValidator>
      <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Height="109px" Width="274px"  ></asp:TextBox>
    </div>
   </form>
 </body>
</html>

还有这个:

<html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
    <title></title>
  </head>
  <body>
   <form id="form1" runat="server">
    <div>                        
      <asp:RegularExpressionValidator ID="rgConclusionValidator2"                   ControlToValidate="TextBox1" ValidationExpression="^[\s\S]{0,100}$" runat="server" SetFocusOnError="true" /></asp:RegularExpressionValidator>
      <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Height="109px" Width="274px"  ></asp:TextBox>
    </div>
   </form>
 </body>
</html>

但它们都不起作用。我对最新的 ie、firefox、chrome、opera 进行了测试。 非常感谢。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    正在工作,但是:

    1. 验证器不会即时验证 - 因此它允许您输入任何内容,包括相当长的文本。它不像 maxlength 属性,它不允许您输入超过 100 个字符。

    2. 您需要一些操作来开始验证。在大多数情况下它是按钮,所以只需添加它:

      &lt;asp:Button runat="server" Text="OK" /&gt;

    3. 您需要错误消息,如果验证失败,将显示给用户 - 将 ErrorMessage 属性添加到验证器:

      &lt;asp:RegularExpressionValidator ... ErrorMessage="ERROR!" /&gt;

    就是这样 - 输入文本,单击按钮,查看错误。

    如果您确实想即时限制文本长度 - 那么您需要 JavaScript,您可以查看此问题以获取示例 Specifying maxlength for multiline textbox

    【讨论】:

      【解决方案2】:

      将此 JavaScript 函数用于 maxlength 并在 OnKeypress 上调用它。

      function checktextarea(textvalue,message,limit)
      {
          var str="";
          var str=textvalue.value;
          if((str.length > limit ))
          {
              alert('Error : '+message + limit + ' characters\n'+ '          You entered text with Length '+str.length);
              textvalue.focus()
              return false;
          }
          else
          {
              return true;
          }
      
      }
      

      【讨论】:

      • 谢谢,但我在我的问题中说过:我不想使用 javascript 解决方案!
      • 使用这个正则表达式 "(\s|.){0,100}$"
      猜你喜欢
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 2016-07-03
      • 1970-01-01
      相关资源
      最近更新 更多