我使用此代码进行十进制验证。它工作正常。但它允许在文本框中输入字母。当我从文本框退出时,只有错误信息会显示附近的文本框。我需要,如果按下字母,文本框不允许进入文本框,该怎么办?
<asp:RegularExpressionValidator ControlToValidate="txtNumber"
runat="server" ValidationExpression="^[1-9]\d*(\.\d+)?$"
ErrorMessage="Please enter only numbers">
</asp:RegularExpressionValidator>
答案 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;
}
}
}