我有这段代码,但是为什么当我使用这个函数验证我的输入字段时,一切正常,除了+和 - 键,甚至我认为它们都是真的。我做错了什么?
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;
};
答案 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);