【问题标题】:<asp:TextBox> should accept only numbers<asp:TextBox> 应该只接受数字
【发布时间】:2015-07-08 13:24:23
【问题描述】:

我在 asp 中创建了一个文本框,如下所示。现在我的问题是文本框应该只接受数字。

<asp:TextBox ID="txtRate" runat="server" Text="" Width="100%" TabIndex="6" ></asp:TextBox>

如何在 Js 文件中实现该函数并在 asp 文件中调用它。我尝试过 keypress 事件,但错误提示为“keypress 不是 asp 文本框的属性”。

我也尝试过 Rangevalidators、RegularExpressionValidator,尽管我无法满足要求。

请帮帮我..

【问题讨论】:

标签: javascript c# asp.net


【解决方案1】:

您应该使用CompareValidator 并将Operator 设置为DataTypeCheck

<asp:CompareValidator runat="server" Operator="DataTypeCheck" Type="Double" 
 ControlToValidate="txtRate" ErrorMessage="Value must be a number" />

这些是您可以查看的types

  • 字符串
  • 整数
  • 日期
  • 货币

【讨论】:

    【解决方案2】:
    <asp:FilteredTextBoxExtender ID="TextBox1_FilteredTextBoxExtender" runat="server"
    Enabled="True" TargetControlID="TextBox1" FilterType="Numbers">
    </asp:FilteredTextBoxExtender>
    

    【讨论】:

      【解决方案3】:

      使用范围验证器或正则表达式验证器。 您必须为文本框设置 ValidationGroup 和 CausesValidation。

      有关示例,请参阅:http://www.tutorialspoint.com/asp.net/asp.net_validators.htm

      您还可以使用 javascripts 进行客户端验证。

      【讨论】:

        【解决方案4】:
        <asp:CompareValidator runat="server" ControlToValidate="txtRate" Type="Integer" Operator="DataTypeCheck" Text="Must be a number!"/>
        

        如果需要,可以将Integer 换成Double

        【讨论】:

          【解决方案5】:

          我在一个项目中使用了 RegularExpressionValidator,只接受数字和小数。

          <asp:RegularExpressionValidator ID="RepRateRegExVal" 
                 ControlToValidate="repRateTxtbox" 
                 ValidationExpression="^\d*\.?\d*$"
                 runat="server" 
                 Display="Dynamic" 
                 CssClass="validator"
                 Text="Repetition Rate must be a valid number">
          </asp:RegularExpressionValidator>
          

          如果您只想接受小数点后一位,请将表达式更改为“^\d*.?\d$”

          【讨论】:

            【解决方案6】:

            这个应该可以的:

                <script language="javascript" type="text/javascript">
                    function CheckNumeric(e) {
            
                        if (window.event) // IE 
                        {
                            if ((e.keyCode < 48 || e.keyCode > 57) & e.keyCode != 8) {
                                event.returnValue = false;
                                return false;
            
                            }
                        }
                        else { // FireFox
                            if ((e.which < 48 || e.which > 57) & e.which != 8) {
                                e.preventDefault();
                                return false;
            
                            }
                        }
                    }
            
                </script>
            
                <asp:TextBox ID="txtRate" runat="server" Text="" Width="100%" TabIndex="6" onkeypress="CheckNumeric(event);"></asp:textbox>
            

            source

            【讨论】:

            • 我已经尝试过了,但它显示错误“onkeypress 不是 textBox 的属性”...我该如何解决这个问题..
            • 你应该能够编译和运行上面的代码。编译器将从文本框创建“输入”,一切都会好的
            【解决方案7】:

            你应该使用 ajaxtoolkit 来做到这一点

             <ajaxToolkit:FilteredTextBoxExtender ValidChars="yourcharallow" runat="server" Enabled="True" TargetControlID="yourTextBox" ID="FilteredTextBoxExtender1"></ajaxToolkit:FilteredTextBoxExtender>
            

            【讨论】:

              猜你喜欢
              • 2012-05-30
              • 1970-01-01
              • 2012-10-08
              • 1970-01-01
              • 2022-01-12
              • 2017-04-06
              • 1970-01-01
              • 2021-12-15
              • 2020-06-22
              相关资源
              最近更新 更多