我有这段代码,但不知何故,当我使用这个函数来验证我的输入字段时,除了 + 和 - 键之外,一切正常,甚至我认为它们是真的。我做错了什么?
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;
};
最佳答案
我没有看到您检查 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);
关于javascript - JS 函数执行错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11791902/