无法将文本框的输入限制为数字 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# [重复]的主要内容,如果未能解决你的问题,请参考以下文章