3 回答

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

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

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
好的,這里是解釋。
e.keyCode-用于獲取代表鍵盤(pán)上鍵的數(shù)字
e.charCode-一個(gè)數(shù)字,代表鍵盤(pán)上按鍵的unicode字符
e.which-(特定于jQuery)是jQuery中引入的屬性(請(qǐng)勿在純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的實(shí)時(shí)示例。
添加回答
舉報(bào)