解決 FireFox 不支援 event.keyCode 的方法

在 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 上面都可以正常的運作。


Dev 2Share @ 點部落