Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS中函数的错误执行_Javascript_Validation - Fatal编程技术网

Javascript JS中函数的错误执行

Javascript JS中函数的错误执行,javascript,validation,Javascript,Validation,我有这段代码,但是为什么当我使用这个函数来验证我的输入字段时,除了+和-键,所有的东西都能工作,甚至我认为它们是真的。我做错了什么 function validateNumber(event) { var key = window.event ? event.keyCode : event.which; if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.ke

我有这段代码,但是为什么当我使用这个函数来验证我的输入字段时,除了+和-键,所有的东西都能工作,甚至我认为它们是真的。我做错了什么

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;
};
函数验证枚举器(事件)
{
var key=window.event?event.keyCode:event.which;
如果(event.keyCode==8 | | event.keyCode==46 | | event.keyCode==37||
event.keyCode==39 | | event.keyCode==107 | | event.keyCode==109||
event.keyCode==32)
{
返回true;
}
否则,如果(键<48 | |键>57)
{
返回false;
}
否则返回true;
};

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

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

首先,定义一个验证函数,该函数将使用regexp检查任意文本:

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

完全重复:我从那个问题中提取了代码,但做了一些更改,现在它不能像预期的那样工作。问题是我不能单独访问表单,我只能使用一些js,根据id执行任何操作