仅允许asp.net文本框中的数字或十进制数据

时间:2015-10-12 14:34:10

标签: javascript asp.net regex textbox

我在asp.net中有一个文本框,我只想输入数字或十进制数据。不应允许用户输入任何其他数据。我自己尝试使用以下代码。但它不允许用户输入十进制数据的小数点。

<script language="JavaScript">
function onlyNumbers(evt)
{
    var e = event || evt; // for trans-browser compatibility
    var charCode = e.which || e.keyCode;

    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    return true;
}
</script>

我修改了下面的代码,以便允许小数点(句点)(代码= 190)

if (charCode != 190) 
{ ((charCode > 31 && (charCode < 48 || charCode > 57)))
 return false; }
 return true;

但它不起作用(这里我使用190作为定义标准的时期)。此外,如果有人可以帮我限制此文本框,用户只能输入6个字符。任何人都可以纠正我。我会非常感激的。

注意:我也试过这个。它也仅适用于数字,也允许输入非数字数据,但如果输入非数字数据则显示错误消息。但它不是我想要的。我不希望用户甚至输入非数字数据。

<asp:TextBox ID="txtBasicPay" runat="server" Height="15px" Width="120px"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="txtBasicPay" runat="server" ErrorMessage="Only numbers allowed" ValidationExpression="\d+"></asp:RegularExpressionValidator>

2 个答案:

答案 0 :(得分:4)

您可以使用以下作为

在ASPX中:

<asp:TextBox ID="txtBasicPay" runat="server" Height="15px" Width="120px" onkeypress="return isFloatNumber(this,event);"></asp:TextBox>

<强>使用Javascript:

function isFloatNumber(e, t) {
   var n;
   var r;
   if (navigator.appName == "Microsoft Internet Explorer" || navigator.appName == "Netscape") {
      n = t.keyCode;
      r = 1;
      if (navigator.appName == "Netscape") {
         n = t.charCode;
         r = 0
      }
   } else {
      n = t.charCode;
      r = 0
   }
   if (r == 1) {
      if (!(n >= 48 && n <= 57 || n == 46)) {
         t.returnValue = false
      }
   } else {
      if (!(n >= 48 && n <= 57 || n == 0 || n == 46)) {
         t.preventDefault()
      }
   }
}

答案 1 :(得分:0)

你的正则表达式不正确,它应该是 ^ \ d + $ 而不是\ d +。

您可能没有连接keyup事件,这就是为什么上面的一个不起作用。

但正则表达式将独自工作。