使用C#在服务器端文本框中进行十进制验证

时间:2012-10-23 10:58:03

标签: c# asp.net validation c#-4.0 decimal

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

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

2 个答案:

答案 0 :(得分: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
   }

答案 1 :(得分: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;

        }
    }
}