2010-07-06 20 views
4

當我將一個函數綁定到一個帶有$('a#link_id').click()的鏈接上,然後點擊鏈接時,它會運行該函數並且它沒什麼問題,但是當我以另一種方式「激活」按鈕時(即使用tab鍵然後按下barspace)只是不起作用。

它發生與$('select#dropbox_id').change()相同:它用於當我用鼠標改變它,但不用方向箭頭。有沒有一種方法可以實現這種不用手動重新綁定$.keyup()?我不知道,也許我只是錯過了一件事。

+0

你可以包括一些你的標記,以便我們知道我們正在處理什麼?根據我的經驗,點擊被調用的方法並不重要。你有沒有嘗試不同的瀏覽器? – 2010-07-06 05:46:08

+0

爲什麼按空格鍵會觸發點擊?在Chrome中按空格鍵會使瀏覽器向下滾動... – Reigel 2010-07-06 05:48:02

+0

@Reigel如果先選擇一個元素,例如通過Tab鍵(Tab鍵)。 – deceze 2010-07-06 05:50:37

回答

0

您不需要任何類型的這些事件。

對於單擊事件,當您使用鼠標或空格鍵單擊某個元素時發生。如果您的點擊事件在使用空格鍵時未觸發,則可能是您在其他地方發生了錯誤。

當您更改下拉框時,只有更改事件觸發。當您使用箭頭鍵更改下拉框的選定值時,只有當控件的焦點丟失時,纔會立即選擇該值,該值被指定爲其控件的選定值,因此,更改事件火災。

如果你想用箭頭鍵實現事件觸發機制,那麼你將不得不使用keyup/keydown事件,沒有其他方式(據我所知)。此外,您可能會檢測到被按下的鍵以確定它是否是按下的方向箭頭之一。

如果您仍然需要任何幫助,可以在您的問題中包含代碼。

我希望這會有所幫助。

0

我想你錯過了focusfocusin事件。在select元素上,當您通過鍵盤輸入向下滾動列表時,不會出現本機事件。 focusfocusin會在element獲得焦點時觸發。

您不能將這樣的事件類型綁定到options,至少不能交叉瀏覽器。因此,如果您確實想要了解該情況,則必須將​​或keyup事件綁定到父項select元素。

相關問題