我嘗試將按鍵轉換爲字符。 在其他問題有人推薦使用onkeydown函數,因爲onkeypress獲取不同的字符不同。將onkeydown收集的按鍵轉換爲JavaScript中的字符
我不知道如何處理像``'()這樣的特殊字符,這在世界各地不同的鍵盤上可能會有所不同。
我嘗試將按鍵轉換爲字符。 在其他問題有人推薦使用onkeydown函數,因爲onkeypress獲取不同的字符不同。將onkeydown收集的按鍵轉換爲JavaScript中的字符
我不知道如何處理像``'()這樣的特殊字符,這在世界各地不同的鍵盤上可能會有所不同。
對於具有可打印的字符等效鍵,你應該使用keypress
事件,因爲你可以從keypress
事件,這通常是不可能的keyup
和事件檢索的字符代碼。
你需要的事件屬性是which
和keyCode
- 幾乎所有的瀏覽器都有一個或兩個的這些,雖然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。
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」。
注意:此代碼使用id爲「location」的HTML元素,並引用一個名爲typeIt(「LETTER」)的函數來分析文本是否應加粗,斜體或加下劃線。 – IamGuest 2016-09-03 14:26:09
基本上,這意味着我必須使用onkeydown處理onkeypress和其餘(如delete鍵)的可打印字符? – Christian 2009-09-17 00:04:28
是的。如果它只是刪除鍵,它應該沒問題 - 我相信在大多數瀏覽器和鍵盤上keyCode是46。 – 2009-09-17 08:31:50