2011-02-05 31 views
2

有什麼辦法可以防止像F1這樣的按鍵被按下?抑制keyPress爲非字符鍵?

短的搜索之後,我發現這個網站:

http://www.cambiaresearch.com/c4/789d4357-60e9-4dbd-8e8c-affb2ebd6960/How-Do-I-Suppress-a-Keystroke-in-a-Browser-Input-Box-Using-Javascript.aspx

這樣可以防止諸如「A」被按下(它不會把得到的文本框),但像鍵的鍵標籤「,」F1「等仍然有效,即重點確實發生了變化,並且在我使用谷歌瀏覽器時,Chrome瀏覽器幫助網站確實彈出。

我特別提到Google Chrome;該解決方案也不必在其他瀏覽器中工作。

這是可能的,如果是這樣,如何?

謝謝。

+0

上帝,我希望不是! – 2011-02-05 13:43:12

+0

我沒有想過Alt + F4的組合,但是抑制F5確實可以與提供的答案一起工作。編輯:即使Alt + F4的作品!奇怪,真的。不知道在製作Chrome時是否預見到了這一點。 – pimvdb 2011-02-05 13:45:59

回答

4

keypress不一定在按鍵不是字符時觸發。因此,瀏覽器可能不觸發回退事件,F1,向下鍵等

嘗試在​​取消事件,而不是:

element.addEventListener('keydown', function(e) { 
    if (e.which === 112) { // F1 pressed 
     e.preventDefault(); // cancel the event 
    } 
} 

注意,這將會在Chrome和其他標準 - 工作但不在Internet Explorer中< 9.

0

我非常懷疑這是可能的。不僅將一個能夠干擾正常的程序行爲(比如,F5刷新頁面,或ALT + F4關閉瀏覽器),但在一個快速測試,它看起來像鑰匙一樣F1沒有事件被激發,所以沒有辦法讓輸入接收。

+1

我同意你的看法,但是很顯然,事件*會被我解僱。 'tab'的keyCode爲9,而'F1'在我的Chrome版本中有一個112的keyCode。編輯:對不起,我使用的是keydown,別介意我的評論。 – pimvdb 2011-02-05 13:42:06