2010-03-09 36 views
2

我想使用event.which jQuery函數來獲取事件的代碼。它在FF中工作得很好,但在IE8中,我只是變得「未定義」。有沒有什麼理由在IE8中不起作用?我使用jQuery版本1.3.2,代碼如下(簡化)。jQuery event.which在IE中不工作

function handleInput(event) { 
    //Get the character code of the pressed button 
    keycode = event.which; 
} 

感謝, 都市報

** ** EDITED

基本上我希望能夠做的是與onkeyup事件屬性的HTML元素,它將調用到handleInput功能。這是我想要HTML的樣子。

<input type="text" value="" onkeyup="handleInput(event)" /> 

有沒有辦法像這樣傳遞「事件」並讓jQuery識別它?

回答

2

jQuery支持event.which。你究竟如何綁定你的處理程序?你在使用jQuery嗎?如果你在做:

jQuery("#element").click(function(evt) { 
//evt is a jQuery-normalized event object 

}); 

它應該工作。您可能不想使用event(請注意,我傳遞evtevent)作爲參數,因爲它將與IE的event對象發生衝突。我相信這是你問題的根源。

編輯

閱讀您的評論後,你需要做的JavaScript文件中,你從<HEAD>引用是這樣的:

jQuery(document).ready(function() { 
    //event-handling binding-code 
}); 
+0

感謝您的回覆Vivin。現在我從HTML元素調用這個函數並傳遞「event」。有沒有辦法通過這樣的事件並讓jQuery識別它?因爲它是動態的,我不會總是知道我將它附加到哪個元素。 – Metropolis 2010-03-09 21:03:22

+0

當你說元素是動態的時,你是什麼意思? – 2010-03-09 21:47:46

+0

那麼我在庫中使用這個,所以我會在很多不同的地方使用這個函數。我並不是真的想要添加jQuery(「#element」),點擊每個項目中的JavaScript文件,我都希望能夠使用上面的HTML元素內聯它。 – Metropolis 2010-03-09 22:06:27

-1

這些人之前都是無知的事實,看到這裏 - >http://api.jquery.com/event.which/

我不知道我在做什麼不同,但我公司的軟件使用e.which喜歡瘋狂,並在IE 7-9中運行完美罰款

看到工作fiddle here

+0

也更容易,嘗試使用'$ .browser'確定瀏覽器類型, '如果($ .browser.safari)如果{ \t // \t做工作 } 其他($。 browser.mozilla){ \t // \t做工作 } 否則,如果($ .browser.msie){ \t // \t做工作 }' – SpYk3HH 2012-01-31 16:35:19

+1

是的,我知道。自從我研究這個問題已經很長時間了,但它顯然不再成爲問題了。我不知道我做了什麼,我不知道爲什麼我接受了上述答案。但我一定有一個很好的理由。我不主張使用$ .browser。我很確定它的棄用也。 – Metropolis 2012-02-01 17:45:49

0

我已經在IE9同樣的經歷。可以使用mousedownmouseup而不是click來修復。