3 回答

TA貢獻1827條經驗 獲得超4個贊
始終如一地處理關鍵事件并非易事。
首先,有兩種不同類型的代碼:鍵盤代碼(代表用戶按下的鍵盤上的鍵的數字)和字符代碼(代表Unicode字符的數字)。您只能在keypress事件中可靠地獲取字符代碼。不要嘗試獲取keyup和keydown事件的字符代碼。
其次,您在keypress事件中獲得的值集與在keyup或keydown事件中獲得的值不同。
我建議將此頁面作為有用的資源。作為總結:
如果您有興趣檢測用戶鍵入字符,請使用該keypress事件。IE奇怪地僅將字符代碼存儲在中,keyCode而所有其他瀏覽器將字符代碼存儲在中which。一些(但不是全部)瀏覽器也將其存儲在charCode和/或中keyCode。一個示例按鍵處理程序:
function(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
alert(charStr);
}
如果您有興趣檢測不可打印的鍵(例如光標鍵),請使用該keydown事件。這keyCode始終是要使用的屬性。請注意,keyup事件具有相同的屬性。
function(evt) {
evt = evt || window.event;
var keyCode = evt.keyCode;
// Check for left arrow key
if (keyCode == 37) {
alert("Left arrow");
}
}

TA貢獻1884條經驗 獲得超4個贊
這是一個條件語句。
如果瀏覽器支持e.keyCode,則采用e.keyCode,否則為e.charCode。
它類似于
var code = event.keyCode || event.charCode
event.keyCode:返回按鍵事件中的非字符鍵或任何其他類型的鍵盤事件中的任何鍵的Unicode值。
event.charCode:返回在按鍵事件期間按下的字符鍵的Unicode值。

TA貢獻1847條經驗 獲得超11個贊
好的,這里是解釋。
e.keyCode-用于獲取代表鍵盤上鍵的數字
e.charCode-一個數字,代表鍵盤上按鍵的unicode字符
e.which-(特定于jQuery)是jQuery中引入的屬性(請勿在純JavaScript中使用)
以下是獲取keyCode和charCode的代碼段
<script>
// get key code
function getKey(event) {
event = event || window.event;
var keyCode = event.which || event.keyCode;
alert(keyCode);
}
// get char code
function getChar(event) {
event = event || window.event;
var keyCode = event.which || event.keyCode;
var typedChar = String.fromCharCode(keyCode);
alert(typedChar);
}
</script>
在JavaScript中獲取keyCode和charCode的實時示例。
添加回答
舉報