【问题标题】:Having trouble with limiting the input of a textbox to numbers C# [duplicate]无法将文本框的输入限制为数字 C# [重复]
【发布时间】: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;
            }
        }
    }

谢谢!

【问题讨论】:

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

标签: c# input textbox limit


【解决方案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://stackoverflow.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 验证,您无需验证代码中的任何内容,您可以按原样使用您的代码。 (注意:在实际生产代码中,我会验证客户端和服务器端)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-11
          • 1970-01-01
          • 1970-01-01
          • 2021-02-24
          • 1970-01-01
          • 2018-06-17
          • 1970-01-01
          • 2012-07-11
          相关资源
          最近更新 更多