2009-09-16 60 views

回答

7

對於具有可打印的字符等效鍵,你應該使用keypress事件,因爲你可以從keypress事件,這通常是不可能的keyup和​​事件檢索的字符代碼。

你需要的事件屬性是whichkeyCode - 幾乎所有的瀏覽器都有一個或兩個的這些,雖然IE使用keyCode的字符代碼muddies水域,而其他一些瀏覽器返回(不同的)關鍵代碼。大多數非IE瀏覽器也有charCode,但似乎所有這樣的瀏覽器也有which,所以charCode從不需要。一個簡單的例子:

document.onkeypress = function(evt) { 
    evt = evt || window.event; 
    var charCode = evt.which || evt.keyCode; 
    var charStr = String.fromCharCode(charCode); 
    alert(charStr); 
}; 

這裏是一個useful reference page

+0

基本上,這意味着我必須使用onkeydown處理onkeypress和其餘(如delete鍵)的可打印字符? – Christian 2009-09-17 00:04:28

+0

是的。如果它只是刪除鍵,它應該沒問題 - 我相信在大多數瀏覽器和鍵盤上keyCode是46。 – 2009-09-17 08:31:50

0
document.onkeydown = checkKey; 
function checkKey(e) { 

e = e || window.event; 
document.getElementById("label").style.display = "none"; 
if (e.keyCode == '65') { 
    //a 
    var lx = document.getElementById('location'); 
    typeIt("a"); 
} 
else if (e.keyCode == '66') { 
    //b 
     var lx = document.getElementById('location'); 
    typeIt("b"); 
} 
else if (e.keyCode == '67') { 
    //c 
     var lx = document.getElementById('location'); 
    typeIt("c"); 
} 
} 

這應該按下該鍵碼成功地轉換爲字符串信,你可以在一個更大的功能使用。它需要更多的時間,但我發現它與大多數瀏覽器和鍵盤(不管語言如何)都高度兼容。我在一個文本編輯器項目中使用了該代碼,該項目將分發給幾個國家的朋友,所以我確信它會工作。注意:上述功能只包括字母「A」,「B」和「C」。

+0

注意:此代碼使用id爲「location」的HTML元素,並引用一個名爲typeIt(「LETTER」)的函數來分析文本是否應加粗,斜體或加下劃線。 – IamGuest 2016-09-03 14:26:09