我想知道ASP.NET中是否有一种方法只允许使用textmode="number"
的文本框中的数字
当我使用它时:
<asp:TextBox runat="server" TextMode="Number" ID="TextBoxDuration" Width="250"></asp:TextBox>
<asp:RequiredFieldValidator ControlToValidate="TextBoxDuration" runat="server" ErrorMessage="Dieses Feld darf nicht leer sein" /><br />
<asp:RegularExpressionValidator runat="server" ControlToValidate="TextBoxDuration" validationexpression="((\d+)((\.\d{1})?))$" ErrorMessage="Nur Zahlen" />
用户仍然可以输入字符e
和+, -
我不想使用具有相同Regularexpressionvalidator
的普通文本框(实际上可以使用)
示例:
答案 0 :(得分:3)
您可以使用RegularExpressionValidator进行此操作。下面是示例代码:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="TextBox1" runat="server" ErrorMessage="Only Numbers allowed" ValidationExpression="\d+"></asp:RegularExpressionValidator>
TextBox上面的只允许输入整数,因为在RegularExpressionValidator中有一个名为ValidationExpression的字段,它验证TextBox。但是,您可以根据自己的要求进行修改。
您可以在MVC和Jquery here中看到更多示例。
答案 1 :(得分:2)
你可以在你的文本框中创建一个Javascript函数。
尝试<asp:TextBox ID="txtNumero" Text="" onkeydown="return jsDecimals(event);" Width="75px" runat="server"></asp:TextBox>
然后
function jsDecimals(e) {
var evt = (e) ? e : window.event;
var key = (evt.keyCode) ? evt.keyCode : evt.which;
if (key != null) {
key = parseInt(key, 10);
if ((key < 48 || key > 57) && (key < 96 || key > 105)) {
//Here is where respond with 0 o 1.
if (!jsIsUserFriendlyChar(key, "Decimals")) {
return false;
}
}
else {
if (evt.shiftKey) {
return false;
}
}
}
return true;
}
答案 2 :(得分:2)
您可以简单地使用正则表达式验证器
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
ControlToValidate="TextBox1" runat="server"
ErrorMessage="Only Numbers allowed"
ValidationExpression="\d+">
</asp:RegularExpressionValidator>
此外,您可以使用以下正则表达式将文本字段添加为12位数字。(疯狂)
^[0-9]{12}$
此外,您可以将字段设置为10到12位(必填),如下所示
^[0-9]{10-12}$
答案 3 :(得分:1)
REGEX
^[0-9]*$
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="tbAccount"
ErrorMessage="Please Enter Only Numbers" ForeColor="Red" ValidationExpression="^\d+$"> </asp:RegularExpressionValidator>
如果您不希望用户在关键事件上输入其他字符
$('#TEXTBOXID').keypress(function (e) {
var a = [];
var k = e.which;
for (i = 48; i < 58; i++)
a.push(i);
// allow a max of 1 decimal point to be entered
if (!(a.indexOf(k) >= 0)) e.preventDefault();
});
答案 4 :(得分:1)
你可以像这样使用jQuery
Number : <input type="text" name="quantity" id="quantity" /> <span id="errmsg"></span>
<script>
$(document).ready(function () {
//called when key is pressed in textbox
$("#quantity").keypress(function (e) {
//if the letter is not digit then display error and don't type anything
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
//display error message
$("#errmsg").html("Digits Only").show().fadeOut("slow");
return false;
}
});
});
</script>
答案 5 :(得分:1)
您可以使用过滤器文本框扩展程序。 它只允许数字。 没有负数或e,+, - 键
<asp:FilteredTextBoxExtender ID="TextBox1_FilteredTextBoxExtender" runat="server" Enabled="True" TargetControlID="txtDay" FilterType="Numbers"> </asp:FilteredTextBoxExtender>
答案 6 :(得分:0)
你也可以像这样使用asp.net字段验证
<asp:TextBox runat="server" CssClass="form-control" ID="txtNumero" />
<asp:RegularExpressionValidator
ID="txtNumero"
ControlToValidate="EmailTextBox"
Text="(Invalid number)"
ForeColor="Red"
ValidationExpression="^\d+$"
runat="server" />
答案 7 :(得分:0)
添加Type =“number”将起作用。
<asp:TextBox ID="txtQty" type="number" runat="server"></asp:TextBox>