【问题标题】:asp.net Textbox Textmode Number, allow numbers onlyasp.net Textbox Textmode Number,只允许数字
【发布时间】:2016-06-17 11:39:18
【问题描述】:

我想知道 ASP.NET 中是否有一种方法可以只允许带有 textmode="number" 的文本框中的数字

当我使用这个时:

<asp:TextBox runat="server" TextMode="Number" ID="TextBoxDuration" Width="250"></asp:TextBox>
<asp:RequiredFieldValidator ControlToValidate="TextBoxDuration" runat="server" ErrorMessage="Dieses Feld darf nicht leer sein" /><br />
<asp:RegularExpressionValidator runat="server" ControlToValidate="TextBoxDuration" validationexpression="((\d+)((\.\d{1})?))$" ErrorMessage="Nur Zahlen" />

用户仍然可以输入字符e+, -

我不喜欢使用具有相同 Regularexpressionvalidator 的普通文本框(实际上可以)

示例:

【问题讨论】:

  • 字符 e、E、+ 和 - 是数字的有效字符。 E 和 e 表示科学计数法,+ 和 - 分别表示正数和负数。您也许可以使用屏蔽编辑控件(第三方)来进一步限制可以输入的字符。
  • 谢谢,但是 expressionvalidatortexmode="number" 不能一起工作?

标签: c# asp.net


【解决方案1】:

您可以为此使用 RegularExpressionValidator。下面是示例代码:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="TextBox1" runat="server" ErrorMessage="Only Numbers allowed" ValidationExpression="\d+"></asp:RegularExpressionValidator>

上面的TextBox 只允许输入整数,因为在RegularExpressionValidator 中有一个名为ValidationExpression 的字段,用于验证TextBox。但是,您可以根据需要进行修改。

您可以在 MVC 和 Jquery here 中查看更多示例。

【讨论】:

    【解决方案2】:

    您可以简单地使用正则表达式验证器作为

    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:RegularExpressionValidator ID="RegularExpressionValidator1"
        ControlToValidate="TextBox1" runat="server"
        ErrorMessage="Only Numbers allowed"
        ValidationExpression="\d+">
    
    </asp:RegularExpressionValidator>
    

    您也可以使用下面的正则表达式将文本字段设置为要添加的 12 位数字。(强制)

    ^[0-9]{12}$
    

    您也可以将字段设置为 10 到 12 位(必填),如下所示

    ^[0-9]{10-12}$
    

    【讨论】:

      【解决方案3】:

      你可以像这样使用 jQuery

      Number : <input type="text" name="quantity" id="quantity" />&nbsp;<span id="errmsg"></span>
      
          <script>
              $(document).ready(function () {
                  //called when key is pressed in textbox
                  $("#quantity").keypress(function (e) {
                      //if the letter is not digit then display error and don't type anything
                      if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
                          //display error message
                          $("#errmsg").html("Digits Only").show().fadeOut("slow");
                          return false;
                      }
                  });
              });
      
          </script>
      

      【讨论】:

        【解决方案4】:

        你可以在你的文本框中添加一个 Javascript 函数。

        试试&lt;asp:TextBox ID="txtNumero" Text="" onkeydown="return jsDecimals(event);" Width="75px" runat="server"&gt;&lt;/asp:TextBox&gt;

        然后

        function jsDecimals(e) {
        
            var evt = (e) ? e : window.event;
            var key = (evt.keyCode) ? evt.keyCode : evt.which;
            if (key != null) {
                key = parseInt(key, 10);
                if ((key < 48 || key > 57) && (key < 96 || key > 105)) {
                    //Here is where respond with 0 o 1.
                    if (!jsIsUserFriendlyChar(key, "Decimals")) {
                        return false;
                    }
                }
                else {
                    if (evt.shiftKey) {
                        return false;
                    }
                }
            }
            return true;
        }
        

        【讨论】:

          【解决方案5】:

          正则表达式

          ^[0-9]*$
          
          
          <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="tbAccount"
              ErrorMessage="Please Enter Only Numbers" ForeColor="Red" ValidationExpression="^\d+$">        </asp:RegularExpressionValidator>
          

          如果您不希望用户在关键事件上键入其他字符,那么

          $('#TEXTBOXID').keypress(function (e) {
              var a = [];
              var k = e.which;
          
              for (i = 48; i < 58; i++)
              a.push(i);
          
              // allow a max of 1 decimal point to be entered
          
              if (!(a.indexOf(k) >= 0)) e.preventDefault();
          
          
          });
          

          【讨论】:

          • RegularExpressionValidator 不起作用似乎我真的必须使用 JQuery thx
          • 是..正则表达式仅在您更改焦点后才起作用。您可以使用键事件来防止用户使用 jquery 输入非数字字符..
          【解决方案6】:

          您可以使用过滤器文本框扩展器。 它只允许数字。 没有负数或 e,+,- 键

          <asp:FilteredTextBoxExtender ID="TextBox1_FilteredTextBoxExtender" runat="server" Enabled="True" TargetControlID="txtDay"  FilterType="Numbers"> </asp:FilteredTextBoxExtender>
          

          【讨论】:

            【解决方案7】:

            你也可以像这样使用asp.net字段验证

            <asp:TextBox runat="server" CssClass="form-control"  ID="txtNumero"  />
                                                            <asp:RegularExpressionValidator
                                                                ID="txtNumero"
                                                                ControlToValidate="EmailTextBox"
                                                                Text="(Invalid number)"
                                                                ForeColor="Red"
                                                                ValidationExpression="^\d+$"
                                                                runat="server" /> 
            

            【讨论】:

              【解决方案8】:

              添加 Type="number" 即可。

              <asp:TextBox ID="txtQty"  type="number" runat="server"></asp:TextBox>
              

              【讨论】:

              • 添加type="number" 几乎相同。这行不通。
              猜你喜欢
              • 2016-04-14
              • 1970-01-01
              • 1970-01-01
              • 2014-07-09
              • 1970-01-01
              • 2017-03-24
              • 1970-01-01
              • 2020-12-16
              • 1970-01-01
              相关资源
              最近更新 更多