如何在web表单文本框中只允许数字和一个小数点

本文关键字:数字 小数点 一个 许数字 web 表单 文本 | 更新日期: 2023-09-27 17:50:11

我是一个编程新手,所以我希望你能保持开放的心态。我在visual studio 2013中使用web表单。我使用的语言是c#。我有一个文本框,我想只接受数字和一个小数点。我该怎么做呢?

注意:我已经看到了很多代码,但他们中的大多数都使用KeyPress事件,我认为是无效的web表单,因为当我去到事件部分在我的文本框的属性窗口,我只看到一个事件是TextChanged

我真的很需要这个。

如何在web表单文本框中只允许数字和一个小数点

您可以使用JavaScript来实现此目的。使用javascript将限制用户输入除数字和小数点以外的所有字符。在aspx页面的标题部分包含以下Javascript:

<SCRIPT language=Javascript>
    function isDecimal(evt)
    {
       var charCode = (evt.which) ? evt.which : event.keyCode
       var parts = evt.srcElement.value.split('.');
       if(parts.length > 1 && charCode==46)
          return false;
       else
       {
          if (charCode == 46 || (charCode >= 48 && charCode <= 57))
             return true;
          return false;
       }
    }
</SCRIPT>
并在文本框控件中包含以下代码片段

onkeypress = "返回isDecimal(事件)"

您可以用以下表达式编写一个正则表达式验证器:^'d+('.'d+)?$这应该确保您有10011220.22等数字。regex的解释可以在这里找到。

编辑:根据您的评论,问题是'也是c#中的特殊字符,因此需要在类后面的代码中进行转义,所以在您的情况下,表达式看起来像这样:^''d+(''.''d+)?$ .

我认为更好的方法是使用正则表达式验证器,如下所示。这应该只验证文本一次(在按下提交时)。您构建它的方式(在后面的代码中)可能有点沉重,因为它很可能在每次更改文本时触发服务器端事件。此外,我不认为(如果内存可用的话),如果您使用ASP,您需要转义正则表达式。净验证器。

^[1-9]''d*(''.''d+)?$

看一下这个线程,它描述了几种方法:http://bytes.com/topic/net/answers/562094-restrict-user-enter-numeric-value-textbox

我相信就像npinti已经提到的那样,验证器将是一种方法。您所想到的可能需要一个JavaScript方法,有一个显示在链接的文章(在底部)。

您可以使用验证器与目标设置到您的文本框和regex 'd+(.'d)?

更多信息请查看此处精度为2的小数的简单正则表达式

另一个例子,

 private void txtPrice_KeyPress(object sender, KeyPressEventArgs e)
{
    if (txtPrice.Text.Length == 0)
    {
        if (e.KeyChar == '.')
        {
            e.Handled = true;
        }
    }
    if (!char.IsDigit(e.KeyChar) && e.KeyChar != 8 && e.KeyChar != 46)
    {
        e.Handled = true;
    }
    if (e.KeyChar == '.' && txtPrice.Text.IndexOf('.') > -1)
    {
        e.Handled = true;
    }
}

你可以试试这个:onkeypress attribute

<asp:TextBox ID="Budget" runat="server" class="form-control" onkeypress="if(event.keyCode != 46 && event.keyCode > 31 && (event.keyCode < 48 || event.keyCode > 57))event.returnValue=false;" placeholder="Budget"></asp:TextBox>