1

我使用此代码进行十进制验证。它工作正常。但它允许在文本框中输入字母。当我从文本框退出时,只有错误消息会显示附近的文本框。我需要,如果我按字母,文本框不允许输入文本框,该怎么做?

<asp:RegularExpressionValidator ControlToValidate="txtNumber" 
                    runat="server" ValidationExpression="^[1-9]\d*(\.\d+)?$"
                        ErrorMessage="Please enter only numbers">
                    </asp:RegularExpressionValidator>
4

2 回答 2

4

只需使用CompareValidator,您实际上不需要使用正则表达式:

<asp:CompareValidator 
      ID="CompareValidator1" runat="server" ControlToValidate="TextBox1"
      ErrorMessage="Please enter a numberical value." ForeColor="Red"
      Operator="DataTypeCheck" Type="Integer">!
</asp:CompareValidator>
 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

您也可以在服务器上执行此操作,只需使用TryParse()

int x = 0;
bool valid = Int32.TryParse(TextBox1.Text, out x);
if(!valid)
   {
        //inform the user
   }
于 2012-10-23T11:05:40.450 回答
1

使用 Javascript:

<asp:TextBox ID="TextBox2" onkeypress="AllowOnlyNumeric(event);" 
   runat="server"></asp:TextBox>

Javascript代码:

function AllowOnlyNumeric(e) {
    if (window.event) // IE 
    {
        if (((e.keyCode < 48 || e.keyCode > 57) & e.keyCode != 8) & e.keyCode != 46) {
            event.returnValue = false;
            return false;

        }
    }
    else { // Fire Fox
        if (((e.which < 48 || e.which > 57) & e.which != 8) & e.which != 46) {
            e.preventDefault();
            return false;

        }
    }
}
于 2012-10-23T11:20:50.347 回答