2012-08-03 65 views
1

我有这段代码,但为什么当我使用这个函数来验证我的输入字段时,除了+和 - 键之外,所有的工作都能正常工作,即使我认为它们是真的。我做错了什么?JS中的函数执行错误

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

完全重复:[HTML文本输入只允许数字输入](http://stackoverflow.com/questions/469357/html-text-input-allow-only-numeric-input) – Andreas 2012-08-03 08:26:20

+0

我从这个问题的代码,但做了一些改变,现在它不起作用作为打算 – Avdept 2012-08-03 08:27:37

回答

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

我该怎么做:? – Avdept 2012-08-03 08:28:46

+0

问题是我没有访问形式本身,我只能使用一些JS,做任何基于ID的行动 – Avdept 2012-08-03 08:33:56