2012-08-03 63 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