0

我有此代码用于验证文本字段编号。

此代码工作正常,但唯一的问题是它不允许我输入.(dot) 。我的文本字段是金额,金额可以是 222.234234 或 222 所以我应该添加什么代码以使用户能够使用以下脚本输入句点

function ValidateNum(input,event)
    {
        var keyCode = event.which ? event.which : event.keyCode;
        if((parseInt(keyCode)>=48 && parseInt(keyCode)<=57) || parseInt(keyCode)==08 ||  parseInt(keyCode)==09 || parseInt(keyCode)==127 )  
        {
           return true;
        }
        return false;
    }

文本域

<input type="text" name="from_amount" onkeypress="return ValidateNum(this,event)" id="from_amount" placeholder="    Type to convert" />`

所以请帮我解决这个问题。

4

2 回答 2

1

键码为.190。
您可以在此处查看此列表-> http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

于 2013-04-22T17:31:17.377 回答
1

为什么不验证整个字符串而不是验证每个输入的字符?

做这个:

//I am assuming that input is the text element
function validateNumber(input) {
    //newer browsers should have .trim(). Otherwise you can do something like:
    //   input.value.replace(/^\s+|\s+$/g, "");
    return /^\d+(\.\d+)?$/.test(input.value.trim()); 
}

您当前的验证功能是否会考虑使用仅输入.字符的情况?多个.字符呢?值123., or 1.43.3, or1..2怎么样?看起来当前函数只验证输入的字符而不查看该字符的上下文(即,它周围的内容)。

另一方面,考虑使用 jQuery 之类的东西或绑定到输入元素而不是使用onkeypress属性。这种绑定方法或多或少已被弃用且不推荐。这种验证方法还可以防止可能令人困惑的按键事件。最好在他们填写后验证整个表单,或者将文本字段标记为无效,因为他们正在填写。

您还可以使用 HTML5typenumber代替text来限制用户可以在该字段中输入的内容。这样,您甚至不必进行任何验证。

于 2013-04-22T17:32:04.267 回答