无法将文本框的输入限制为数字 C# [重复]

Posted

技术标签:

【中文标题】无法将文本框的输入限制为数字 C# [重复]【英文标题】:Having trouble with limiting the input of a textbox to numbers C# [duplicate] 【发布时间】:2013-11-15 01:52:00 【问题描述】:

我试图限制一个非常简单的 Web 应用程序的文本框的输入,以便用户只能输入数字。如果不使用 20 行代码,我在执行此操作时遇到了麻烦,感谢您提供任何帮助!

protected void Button1_Click(object sender, EventArgs e)
    
        
            int input = int.Parse(InputBox.Text);
            if (input > 15)
            
                String hot;
                hot = "hot";
                Result.Text = hot;
                Result.BackColor = System.Drawing.Color.Red;
            
            else if (input <= 15)
            
                String cold;
                cold = "cold";
                Result.Text = cold;
                Result.BackColor = System.Drawing.Color.Blue;
            
        
    

谢谢!

【问题讨论】:

这不会将文本框的输入限制为数字,您只是根据数字检查给出的值。这可能会导致它翻倒。您要限制输入还是只检查值? 我已经取消了限制它的尝试,因为它是一团乱码:/我想限制输入(然后检查值) 你可以使用正则表达式 在下面查看我的答案,为您提供您想要的。 【参考方案1】:

要在用户的 html 页面上限制它,您需要显式或隐式使用 javascript 或 jQuery 函数(例如通过微软工具)。要通过在服务器端将文本值分隔为行来获取行数,请使用 String.Split 方法。

【讨论】:

见下文,你也可以使用HTML5,因此在他的例子中否定了jQuery的使用。 我太快了,不知道如何删除我的答案:)【参考方案2】:

使用正则表达式检查它是否是数字,然后用它做你需要的,像这样:

  if ((Regex.IsMatch(InputBox.Text, @"^[0-9]+$")))
        
            try
            

【讨论】:

【参考方案3】:

使用int.TryParse,这将返回一个布尔值,具体取决于字符串是否可以解析为int。这样您就可以知道是否在文本框中输入了数字。

【讨论】:

【参考方案4】:

您是否尝试过在网页上使用正则表达式来阻止用户输入数字?也许 Try catch 也可能会有所帮助

try
    int input = int.Parse(InputBox.Text);
    //add any addition logic you need here

catch
    Result.Text="Not a number";

【讨论】:

【参考方案5】:

以下是验证数值的 javascript 代码。

<script type="text/javascript">
        function ValidateTextBox() 
            var value = document.getElementById("txtprice").value;
            if (!isNumber(value)) 
                alert("Please Enter Numeric Value ");
                return false;
            
            else 
                return true;
            
        
        function isNumber(n) 
            return !isNaN(parseFloat(n)) && isFinite(n);
        
    </script>

ASPX 页面:-

  <asp:Button ID="Button1" runat="server" OnClientClick="return ValidateTextBox();" Text="Button" OnClick="Button1_Click" />

【讨论】:

你应该教他如何调用那个javascript函数。 @PmanAce :- 感谢您的回复,我编辑了答案。【参考方案6】:

尝试将以下标记添加到您的 Web 应用程序的 TextBox 旁边:

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="Input must be a number!"
    ValidationExpression="^[1-9]\d*$" ControlToValidate="InputBox"></asp:RegularExpressionValidator>

这将在每次回发时验证控件“InputBox”,以确保它匹配正则表达式 ^[1-9]\d*$,它只允许整数值。

如果您只想通过特定的回发来验证输入,请查看 Validation Groups。

另外,如果您需要十进制值或需要允许其他数值,请参阅以下问题答案:https://***.com/a/2811058/1941466

【讨论】:

谢谢!我用过这个,但即使我输入 0-9 之间的整数,它也会显示错误消息【参考方案7】:

您还可以使用 HTML5 表单验证在将表单发送到服务器之前进行一些验证。以下是一些示例 (http://www.the-art-of-web.com/html/html5-form-validation/):

<input type="text" name="temp" required> (requierd validation)
<input type="number" size="2" name="temp" min="-273" max="999" value="21"> (number input type with defaults and limits)

有了 HTML5 验证,您无需验证代码中的任何内容,您可以按原样使用您的代码。 (注意:在实际生产代码中,我会验证客户端和服务器端)

【讨论】:

以上是关于无法将文本框的输入限制为数字 C# [重复]的主要内容,如果未能解决你的问题,请参考以下文章

asp.net怎么限制文本框输入的类型c#

C#限制文本框输入

C# winform 文本框里,怎么设置数字的格式?

c#如何判断文本框中是不是是数字

vb中,如何限制输入的文本框的内容只能是数字数或者字母?

c#中如何判断文本框中是不是是数字(包括小数)