0

我有大量文本字段需要在 onkeyup 上进行评估,以确保只输入数字。小数点没问题。没有价值也是如此。

出于某种原因,这与小数匹配。例如,我输入 4 然后 。并且它在 .

我该如何纠正?

var s_in = 0;
for (var i = 10; i < 19; i++) {
    var fObj = document.getElementById(field+'_'+i);
    var text = fObj.value;
    if (text) {
        var s = parseInt(text);
        var pattern = /^[+-]?(\d*\.)?\d+$/;
        var result;
        if ((result = pattern.exec(text)) != null) {
            if (s > -1) {
                s_in += s;
            }
        } else {  // not empty and not a number
            alert('The entry for Hole ' + i + ' ' + ucfirst(field) + ' is "' + text + '" This is not a number. It will be erased now.');
            fObj.value = '';
            fObj.focus();
            return false;
        }
    }
}
4

1 回答 1

3

您的正则表达式需要小数点后的一个或多个数字,您必须-在第一组中转义)。如果您不想要求小数点后的数字,那么您可以使用它(将 a 更改+为 a*并放在\前面-):

/^[+\-]?(\d*\.)?\d*$/
于 2012-12-17T18:25:46.180 回答