2014-02-14 53 views
-1

工作,我有一個文本框的設置方式如下:isNaN不能在Firefox

<input type="text" name="CardNumber" id="CardNumber" maxlength="7" onkeypress="if(isNaN(this.value+String.fromCharCode(event.keyCode))) return false;" onblur="ValidateCardNumber()"/> 

(注:ValidateCardNumber()是一個獨立的函數,用來檢查除其他事項外的長度,但它不是限制的一部分該字段轉換爲數值)。

這在IE中正常工作。它將允許我輸入數字,但忽略非數字按鍵。

在Firefox中,我無法在該文本框中輸入任何內容。

有什麼想法?

我打開到不同的手段到最後。

謝謝。

+0

如同大多數這樣的解決方案,這是怎麼回事,如果用戶決定在任何文本粘貼打破可怕不管。允許自由輸入;之後驗證並在''上提供'pattern'屬性。 – Ryan

+0

@epascarello:爲什麼'event'會成爲問題?創建並分配給該元素的處理程序將在Firefox中具有「event」參數。 –

+0

@cookiemonster這是'event.charCode','event.keyCode'和'event.which'。 – Witcher42

回答

4

調試將顯示您的問題

console.log(this.value+String.fromCharCode(event.keyCode)); 

查看控制檯,你會看到

enter image description here

所以,現在看看它返回

console.log(this.value, event.keyCode); 

enter image description here

所以關鍵代碼總是返回零。

你需要做的是利用event.which用於Firefox

console.log(this.value+String.fromCharCode(event.which || event.keyCode)); 

enter image description here

+0

工程就像一個魅力。謝謝! 這是修改的代碼: onkeypress =「if(isNaN(this.value + String.fromCharCode(event.which || event.keyCode)))return false;」 –