1

我有这段代码,但是为什么当我使用这个函数来验证我的输入字段时,一切正常,除了 + 和 - 键,即使我认为它们是真的。我做错了什么?

function validateNumber(event)
{
    var key = window.event ? event.keyCode : event.which;

    if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 ||
        event.keyCode == 39 || event.keyCode == 107 || event.keyCode == 109 ||
        event.keyCode == 32 )
    {
        return true;
    }
    else if(key < 48 || key > 57)
    {
        return false;
    }
    else return true;
};
4

1 回答 1

2

我没有看到您检查189( -) 和187( =,这实际上是您键入+) 时发生的情况。您可能想检查是否Shift按下了键+

如前所述,总体而言,验证用户输入是一种错误的方式。您需要检查输入的值,而不是单个击键。

首先,定义一个验证函数,该函数将使用正则表达式检查任意文本:

function checkArithmetic(str) {
    var regexp = /^[0-9+-]$/;
    return regexp.test(str);
}

接下来,将处理程序添加到您的输入元素:

input.addEventListener('input', function (e) {
    var value = input.value;

    if (checkArithmetic(value)) {
        // OK!
    } else {
        // error
    }
}, false);
于 2012-08-03T08:27:42.167 回答