簡化的關鍵,僅在於判斷前加一行:
if (window.event) { e = event; e.which = e.keyCode; } else if (!e.which) e.which = e.keyCode;
這一行讓 ie 的判斷方式和 Firefox 一樣。
<script language='JavaScript'>
function onKeyPress_(e) {
// 這一行讓 ie 的判斷方式和 Firefox 一樣。
if (window.event) { e = event; e.which = e.keyCode; } else if (!e.which) e.which = e.keyCode;
var code = e.which; // 輸入鍵的 ASCII 碼。
var char = String.fromCharCode(e.which); // 輸入鍵字元。
var isAlt = e.altKey; // 是否按下 Alt 鍵。
var isCtrl = e.ctrlKey; // 是否按下 Ctrl 鍵。
var isShift = e.shiftKey; // 是否按下 Shift 鍵。
// ...
if (code==13) { // 判斷輸入鍵是否為 Enter 鍵。
//...
}
if (48<=code && code<=57) { // 判斷輸入鍵是否為數字 0~9。
//...
}
if (65<=code && code<=90) { // 判斷輸入鍵是否為大寫字母 A~Z。
//...
}
if (97<=code && code<=122) { // 判斷輸入鍵是否為小寫字母 a~z。
//...
}
switch (code) {
case 38: //up arrow
case 40: //down arrow
case 37: //left arrow
case 39: //right arrow
case 33: //page up
case 34: //page down
case 36: //home
case 35: //end
case 13: //enter
case 9: //tab
case 27: //esc
case 16: //shift
case 17: //ctrl
case 18: //alt
case 20: //caps lock
case 8: //backspace
case 46: //delete
}
return true; // 按鍵合法,如果是 input 觸發的事件,字元會加入 input 的 value 中。
return false; // 按鍵不合法,如果是 input 觸發的事件,字元不會加入 input 的 value 中。
}
</script>
input 控制判斷語法:
<input type=text value='' onKeyPress='return onKeyPress_(event)' />
全域控制判斷語法:
<script language='JavaScript'>
document.onkeypress = onKeyPress_; // 設定整個網頁的按鍵輸入由 onKeyPress_ 函數控制判斷。
</script>
注意,以上程式碼僅測試過 ie 和 Firefox。
參考網址:
http://talk.away.com.tw/main/modules/weblog/details.php?blog_id=7
請問是否可以單純做一個判斷式,只要第一個字元不可為空白鍵?謝謝!
回覆刪除