如何在web表单文本框中只允许数字和一个小数点
本文关键字:数字 小数点 一个 许数字 web 表单 文本 | 更新日期: 2023-09-27 17:50:11
我是一个编程新手,所以我希望你能保持开放的心态。我在visual studio 2013中使用web表单。我使用的语言是c#。我有一个文本框,我想只接受数字和一个小数点。我该怎么做呢?
注意:我已经看到了很多代码,但他们中的大多数都使用KeyPress事件,我认为是无效的web表单,因为当我去到事件部分在我的文本框的属性窗口,我只看到一个事件是TextChanged
我真的很需要这个。
您可以使用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+)?$
这应该确保您有100
或11220.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>