我是编程新手,所以我希望你保持开放的心态。我在visual studio 2013中使用Web表单。我使用的语言是C#。我有一个文本框,我只想接受数字和一个小数点。我怎么能这样做。
注意:我看过很多代码,但大多数代码都使用KeyPress事件,我认为这对Web表单无效,因为当我转到文本框属性窗口的events部分时,我只看到一个事件这是TextChanged。
任何提示都会对我有所帮助。
提前感谢。
答案 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+)?$
这应确保您拥有100
或11220.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;
}
}