asp.net Textbox Textmode Number,仅允许数字

时间:2016-06-17 11:39:18

标签: c# asp.net

我想知道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的普通文本框(实际上可以使用)

示例:

enter image description here

8 个答案:

答案 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" />&nbsp;<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>