如何仅允许Web表单文本框中的数字和一个小数点

时间:2014-03-14 12:39:36

标签: c# asp.net webforms

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

注意:我看过很多代码,但大多数代码都使用KeyPress事件,我认为这对Web表单无效,因为当我转到文本框属性窗口的events部分时,我只看到一个事件这是TextChanged。

任何提示都会对我有所帮助。

提前感谢。

5 个答案:

答案 0 :(得分:2)

您可以使用 JavaScript 来实现此目的。使用javascript将限制用户输入除数字和小数点以外的所有字符。在aspx页面的head部分包含以下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 =“return isDecimal(event)”

答案 1 :(得分:1)

您可以使用以下表达式编写正则表达式验证程序:^\d+(\.\d+)?$这应确保您拥有10011220.22等数字。可以使用here来解释正则表达式。

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

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

编辑2:这个正则表达式应该有所帮助:^[1-9]\\d*(\\.\\d+)?$

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

您可以使用目标设置为文本框并使用正则表达式\ d +(。\ d)的验证程序吗?

有关详情,请点击此处 Simple regular expression for a decimal with a precision of 2

答案 4 :(得分:0)

另一个例子,

 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;
    }
}