在 IE 上一般使用 JavaScript 來判斷按鍵碼的方法都是透過 event.keyCode,Google Chrome 亦同; 無奈如果使用者用的是 FireFox,它卻不支援這個語法。在相同的情況下,它支援 e.which。所以如果你不修改程式碼的話,會造成明明在 IE 上可以順作運作的程式,到了 FireFox 卻是不動如山,甚至發生錯誤...
在 IE 上一般使用 JavaScript 來判斷按鍵碼的方法都是透過 event.keyCode,Google Chrome 亦同; 無奈如果使用者用的是 FireFox,它卻不支援這個語法。在相同的情況下,它支援 e.which。所以如果你不修改程式碼的話,會造成明明在 IE 上可以順作運作的程式,到了 FireFox 卻是不動如山,甚至發生錯誤。
這個問題其實已經是個很熱門的話題,在網路上有很多人討論。不過我看到過最簡捷的解決方法出現在以下的連結:
http://www.mredkj.com/tutorials/validate.html
作者寫了一個很簡單的程式:
function onKeyPressBlockNumbers(e) { var key = window.event ? e.keyCode : e.which; var keychar = String.fromCharCode(key); reg = /\d/; return !reg.test(keychar); } ... <input type="text" onkeypress="return onKeyPressBlockNumbers(event);" />
這個程式的目的是在阻止使用者輸入數字字元。如果你要反過來讓使用者只能輸入數字的話,就把 return !reg.test(keychar); 改成 return reg.test(keychar); 即可。不過裡面的關鍵是在 var key = window.event ? e.keyCode : e.which; 這一行指令,透過它即可適切的切換 e.keyCode 和 e.which。我試過果然在 IE 和 FireFox 上面都可以正常的運作。