JS中的函数执行错误

时间:2012-08-03 08:17:39

标签: javascript validation

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

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;
};

1 个答案:

答案 0 :(得分: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);