允许使用javascript将小数限制为2的文本框

允许使用javascript将小数限制为2的文本框,javascript,decimal,Javascript,Decimal,我有一个问题,将文本框中小数点后的值限制为2 我不想用正则表达式。 谁能帮我实现这个目标 我不允许字符和小数点限制为1 这是我的密码: function CheckNumeric(e) { if (window.event) // IE { if ((e.keyCode < 48 || e.keyCode > 57) & e.keyCode != 8 & !(e.keyCode == 46 && e.target.

我有一个问题,将文本框中小数点后的值限制为2

我不想用正则表达式。 谁能帮我实现这个目标

我不允许字符和小数点限制为1

这是我的密码:

function CheckNumeric(e) {      
if (window.event) // IE 
    {
        if ((e.keyCode < 48 || e.keyCode > 57) & e.keyCode != 8 & !(e.keyCode == 46 && e.target.value.indexOf(".") == -1)) {
            event.returnValue = false;
            return false;
        }
    }
    else { // Fire Fox
        if ((e.which < 48 || e.which > 57) & e.which != 8 & !(e.which == 46 && e.target.value.indexOf(".") == -1)) {
            e.preventDefault();
            return false;
        }
    }
    }
  }

请考虑如下:

<asp:TextBox ID="TextBox1" runat="server" Width="180px" onkeypress="return onlyDotsAndNumbers(this,event)"></asp:TextBox>
function onlyDotsAndNumbers(txt, event) {
    var charCode = (event.which) ? event.which : event.keyCode   
    if (charCode == 46) {
        if (txt.value.indexOf(".") < 0)
            return true;
        else
            return false;
    }

    if (txt.value.indexOf(".") > 0) {
        var txtlen = txt.value.length;
        var dotpos = txt.value.indexOf(".");
        if ((txtlen - dotpos) > 2)
            return false;
    }

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

    return true;
}
.aspx页面中的Textbox控件,如下所示:

<asp:TextBox ID="TextBox1" runat="server" Width="180px" onkeypress="return onlyDotsAndNumbers(this,event)"></asp:TextBox>
function onlyDotsAndNumbers(txt, event) {
    var charCode = (event.which) ? event.which : event.keyCode   
    if (charCode == 46) {
        if (txt.value.indexOf(".") < 0)
            return true;
        else
            return false;
    }

    if (txt.value.indexOf(".") > 0) {
        var txtlen = txt.value.length;
        var dotpos = txt.value.indexOf(".");
        if ((txtlen - dotpos) > 2)
            return false;
    }

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

    return true;
}

请参阅,onkeypress事件,调用javascript函数之一,如下所示:

<asp:TextBox ID="TextBox1" runat="server" Width="180px" onkeypress="return onlyDotsAndNumbers(this,event)"></asp:TextBox>
function onlyDotsAndNumbers(txt, event) {
    var charCode = (event.which) ? event.which : event.keyCode   
    if (charCode == 46) {
        if (txt.value.indexOf(".") < 0)
            return true;
        else
            return false;
    }

    if (txt.value.indexOf(".") > 0) {
        var txtlen = txt.value.length;
        var dotpos = txt.value.indexOf(".");
        if ((txtlen - dotpos) > 2)
            return false;
    }

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

    return true;
}
函数onlyDotsAndNumbers(txt,事件){
var charCode=(event.which)?event.which:event.keyCode
if(charCode==46){
if(txt.value.indexOf(“.”)小于0)
返回true;
其他的
返回false;
}
如果(txt.value.indexOf(“.”>0){
var txtlen=txt.value.length;
var dotpos=txt.value.indexOf(“.”);
如果((txtlen-dotpos)>2)
返回false;
}
如果(字符码>31&(字符码<48 | |字符码>57))
返回false;
返回true;
}

这将对您有所帮助。

我们可以看一个预期行为的例子吗?例如,什么是允许的,什么是应该失败的?此外,您所说的“文本框”是指
还是
?2.34、2.01、2.0、289365.15这些应该是正确的,而12.23322、2.4566、2.85644666类似的任何操作都应该失败。只有onKeypressevent only在小数点后不允许超过2个值。好的,为什么不使用
RegExp
?在我看来,非RegExp解决方案背后的逻辑量将需要更多的处理。我不允许用户在小数后输入超过2个值。我认为使用regex是不可能的。如果粘贴会发生什么?如果您键入的数字不带
,然后最后添加
,会发生什么情况?输入两个十进制值后,它不允许任何值,前缀我们无法更改。我们应该能够编辑前缀