根據 https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
「的KeyboardEvent.key只讀屬性返回由用戶按下的鍵或鍵的值。」
返回的值是字符串。如果你想檢查範圍,你可能不得不繼續使用key.code。
或者,也可以在例如使用switch語句像MDN
switch (event.key) {
case "ArrowDown":
// Do something for "down arrow" key press.
break;
case "ArrowUp":
// Do something for "up arrow" key press.
break;
case "ArrowLeft":
// Do something for "left arrow" key press.
break;
case "ArrowRight":
// Do something for "right arrow" key press.
break;
case "Enter":
// Do something for "enter" or "return" key press.
break;
case "Escape":
// Do something for "esc" key press.
break;
default:
return; // Quit when this doesn't handle the key event.
}
或事件仍然讓喜歡
var validKeys = ["ArrowDown", "ArrowUp", ...]
,然後一個數組檢查,看看是否event.key在陣列。
最後,你可以使用正則表達式
這應該工作
<script type="text/javascript">
document.addEventListener('keydown', function(event){
var charTyped = event.key;
if (/^[a-z\d]$/i.test(charTyped)) {
console.log("Letter or number typed: " + charTyped);
}
})
</script>
它糾正了數字和字符。但是,我使用(event.key> =';'&& event.key <=''')(範圍從186到192)進行檢查,它獲得了其他範圍外的關鍵字。 –
此外,如果我檢查(event.key> ='A'&& event.key <='Z'),所有其他鍵,如「delete」,「end」,「tab」等仍然在此範圍內。 –
@LeThanh - 請參閱我更新的答案,以大寫字母爲例。關於你的第一條評論,我不明白。字符「;」到「'」覆蓋範圍59至96. – Arnauld