2010-06-07 64 views

回答

6

確保您使用正確的ascii字符代碼進行按鍵事件,並確保您正在檢查正在測試的瀏覽器的正確屬性。IE使用event.keyCode,其他使用event.which。下面的代碼工作正常,我在IE,Firefox和Chrome:

document.getElementById("hello").onkeypress = function (evt) 
{ 
    var k = evt ? evt.which : window.event.keyCode; 
    if (k == 32) 
     return false; 
}​ 

http://jsbin.com/ikowo4

+0

其實如果你比較keycode 32它有點不同。 我可以通過 解決此問題.keydown和keycode = 32 ... – 2010-06-07 10:04:39

+0

@A明亮的工作人員:你看看我提供的jsbin鏈接嗎?它有一個輸入框,我在這裏使用的代碼在IE,Firefox和Chrome中運行得很好。它將允許任何字符被輸入,除了空格字符。除此之外,我不確定我是否理解你的評論想說的話。 – 2010-06-07 10:07:47

+0

實際上,輸入的類型是網格中的過濾器按鈕,並且已經有一些onclick事件,所以如果使用onkeypress,事件仍然會被解僱。但如果我使用onkeydown,則onclick事件不會。 感謝你的例子.. 我已經修改了一下,你可以檢查出來。 http://jsbin.com/ikowo4/2 – 2010-06-07 10:38:50

1

d 實際上如果比較的鍵碼32的有點不同。我可以通過.keydown和keycode = 32來解決這個問題 - - 一個聰明的工人6年7月10日在10:04

@A明亮的工人:你看看我提供的jsbin鏈接?它有一個輸入框,我在這裏使用的代碼在IE,Firefox和Chrome中運行得很好。它將允許任何字符被輸入,除了空格字符。除此之外,我不確定我是否理解你的評論想說的話。 - - 安迪E 6年6月7日10:07

@安迪:其實輸入類型是網格中的過濾器按鈕,並已經有一些onclick事件,所以如果我使用onkeypress事件仍然被解僱。但如果我使用onkeydown,則onclick事件不會。感謝你的例子..我修改了一下,你可以檢查出來。 jsbin.com/ikowo4/2 - 一個聰明的工作者6年7月7日在10:38

@A明亮的工作者:啊,這使得它現在更清晰一點。查看jsbin.com/ikowo4/4,使用您的開發人員工具(Firebug,IE開發工具,Chrome開發工具等)打開控制檯。每個事件都返回false,所以鏈中的下一個事件不應該觸發。在Chrome和IE中,只顯示onkeydown事件觸發,而Firefox顯示所有三個事件觸發。我不確定這是否對你有幫助,但看起來你需要在你接近你的答案之前準確找出每個瀏覽器中的差異。對不起,我忍不住了,祝你好運。 - - 安迪E 10年6月7日在11:11

感謝安迪,Infact我的應用程序支持IE瀏覽器,所以我目前沒有問題。 - 一個聰明的工作者6年10月10日在7:01