我正在努力解決一個jQuery UI小部件上非常奇怪的JavaScript行爲。 IE7(贏得XP),jQuery 1.2.6(是的,這是一箇舊版本)。IE e.keyCode - 我如何區分&符號和向上箭頭?
小部件是一個組合框,它捕獲鍵盤事件並具有箭頭鍵的特殊行爲。
當我嘗試在「flexbox」輸入字段中鍵入「&」字符時,出現奇怪的行爲。
的Flexbox的有像一些代碼:
//initialization
$myInputElement.keypress($.flexbox.process_key);
$.flexbox.process_key = function process_key(e) {
$.flexbox.flexboxFromInput(this).processKey(e);
return true;
};
//on the flexbox object's prototype:
...
processKey: function processKey(e) {
var mod = 0;
if (typeof (e.ctrlKey) !== 'undefined') {
if (e.ctrlKey) mod |= 1;
if (e.shiftKey) mod |= 2;
} else {
if (e.modifiers & Event.CONTROL_MASK) mod |= 1;
if (e.modifiers & Event.SHIFT_MASK) mod |= 2;
}
...
switch (e.keyCode) {
case 38: // up
this.prevResult();
break;
case 40: // down
if (this.getCtr().is(':visible')) this.nextResult();
else this.flexboxDelay(true);
break;
...etc.
}
}
...
當我介紹了一個日誌聲明,我找到的是按 「&」(SHIFT + 7)產生三個按鍵事件:
INFO: Flexbox> processKey, keyCode=16, ctrl=false, shift=true
INFO: Flexbox> processKey, keyCode=55, ctrl=false, shift=true
INFO: Flexbox> processKey, keyCode=38, ctrl=false, shift=true
顯然,keyCode 38是&符號的向上箭頭鍵和ASCII碼?
正如我在寫這篇文章,我想到我可以檢測到按鍵爲「shift + 7」(keyCode 55)將其視爲「&」鍵,然後設置某種標誌忽略下一個按鍵這是38)。這似乎是一個可怕的黑客。
有沒有人有更好的方法來區分特殊字符,如「&」和IE中的箭頭鍵?
我認爲它談論的是關於IE瀏覽器的密鑰,這個箭頭鍵的keyCodes形成一個生氣的悲傷面孔:%&'( (在評論文字輸入字體中效果更好) – RMorrisey 2010-03-04 00:55:10