asp.net 文本框中仅允许数字或小数数据
Allow only numeric or decimal data in asp.net textbox
我在 asp.net 中有一个文本框,我只想在其中输入数字或小数数据。甚至不应允许用户输入任何其他数据。我已经使用以下代码自己尝试过。但它不允许用户为十进制数据输入小数点。
<script language="JavaScript">
function onlyNumbers(evt)
{
var e = event || evt; // for trans-browser compatibility
var charCode = e.which || e.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
</script>
我修改了下面的代码,使其允许小数点(句点)(代码=190)
if (charCode != 190)
{ ((charCode > 31 && (charCode < 48 || charCode > 57)))
return false; }
return true;
但效果不佳(这里我使用 190 作为定义标准的周期)。此外,如果有人可以帮助我限制此文本框,让用户只能输入 6 characters.Can,请任何人纠正我。我将非常感激。
注:这个我也试过。它还仅适用于数字,也允许输入非数字数据,但如果输入非数字数据,则会显示错误消息。但这不是我想要的。我什至不希望用户输入非数字数据。
<asp:TextBox ID="txtBasicPay" runat="server" Height="15px" Width="120px"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="txtBasicPay" runat="server" ErrorMessage="Only numbers allowed" ValidationExpression="\d+"></asp:RegularExpressionValidator>
您可以将以下内容用作
在 ASPX 中:
<asp:TextBox ID="txtBasicPay" runat="server" Height="15px" Width="120px" onkeypress="return isFloatNumber(this,event);"></asp:TextBox>
Javascript:
function isFloatNumber(e, t) {
var n;
var r;
if (navigator.appName == "Microsoft Internet Explorer" || navigator.appName == "Netscape") {
n = t.keyCode;
r = 1;
if (navigator.appName == "Netscape") {
n = t.charCode;
r = 0
}
} else {
n = t.charCode;
r = 0
}
if (r == 1) {
if (!(n >= 48 && n <= 57 || n == 46)) {
t.returnValue = false
}
} else {
if (!(n >= 48 && n <= 57 || n == 0 || n == 46)) {
t.preventDefault()
}
}
}
你的正则表达式不正确,应该是 ^\d+$ 而不是 \d+.
您可能没有连接 keyup 事件,这就是上述事件不起作用的原因。
但正则表达式将单独工作。
我在 asp.net 中有一个文本框,我只想在其中输入数字或小数数据。甚至不应允许用户输入任何其他数据。我已经使用以下代码自己尝试过。但它不允许用户为十进制数据输入小数点。
<script language="JavaScript">
function onlyNumbers(evt)
{
var e = event || evt; // for trans-browser compatibility
var charCode = e.which || e.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
</script>
我修改了下面的代码,使其允许小数点(句点)(代码=190)
if (charCode != 190)
{ ((charCode > 31 && (charCode < 48 || charCode > 57)))
return false; }
return true;
但效果不佳(这里我使用 190 作为定义标准的周期)。此外,如果有人可以帮助我限制此文本框,让用户只能输入 6 characters.Can,请任何人纠正我。我将非常感激。
注:这个我也试过。它还仅适用于数字,也允许输入非数字数据,但如果输入非数字数据,则会显示错误消息。但这不是我想要的。我什至不希望用户输入非数字数据。
<asp:TextBox ID="txtBasicPay" runat="server" Height="15px" Width="120px"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="txtBasicPay" runat="server" ErrorMessage="Only numbers allowed" ValidationExpression="\d+"></asp:RegularExpressionValidator>
您可以将以下内容用作
在 ASPX 中:
<asp:TextBox ID="txtBasicPay" runat="server" Height="15px" Width="120px" onkeypress="return isFloatNumber(this,event);"></asp:TextBox>
Javascript:
function isFloatNumber(e, t) {
var n;
var r;
if (navigator.appName == "Microsoft Internet Explorer" || navigator.appName == "Netscape") {
n = t.keyCode;
r = 1;
if (navigator.appName == "Netscape") {
n = t.charCode;
r = 0
}
} else {
n = t.charCode;
r = 0
}
if (r == 1) {
if (!(n >= 48 && n <= 57 || n == 46)) {
t.returnValue = false
}
} else {
if (!(n >= 48 && n <= 57 || n == 0 || n == 46)) {
t.preventDefault()
}
}
}
你的正则表达式不正确,应该是 ^\d+$ 而不是 \d+.
您可能没有连接 keyup 事件,这就是上述事件不起作用的原因。
但正则表达式将单独工作。