![](/img/trans.png)
[英]why doesn't the jquery change event fire when i use the up or down arrows on a select?
[英]jQuery .change() event doesn't fire on select list from keyboard: how can I override this?
jQuery .change()
事件不會在用戶第二次鍵入時觸發,並按Enter鍵以選擇項目。 它第一次開火。
請參閱: http : //jsfiddle.net/CtXbU/
如果您專注於列表並鍵入AD並按Enter鍵,則[編輯]將觸發警報。 但是,如果您輸入AG並按Enter,則不會發生任何事情。 單擊遠離列表時,僅會彈出警報。
如果我想處理用戶使用鼠標和鍵盤更改列表,我該怎么辦?
我知道我可以使用.keypress()
來處理鍵盤事件,但是讓兩個獨立的代碼段做同樣的事情感覺很奇怪。
有沒有一個jQuery事件可以在它們發生時立即處理鼠標和鍵盤的變化?
謝謝!
**更新**
這可能會澄清我的問題: http : //jsfiddle.net/Bybr2/2/
// How can I create an event (or handler) that
// (a) fires AS SOON AS keypress is invoked from user keyboard input
// (b) also fires AS SOON AS change is invoked from user mouse input
// (c) does not fire a second time when change is invoked after keypress, when the user clicks away following keypress?
按鍵后的change
可能非常混亂 - 只有當用戶按下Enter或點擊時才會發生,所以如果我進行客戶端更改,那么用戶可能會非常驚訝!
我能想到的唯一解決方案是某種變量,如user_has_just_done_keypress
,在user_has_just_done_keypress
上設置為true
,然后在下一次change
事件時重置為false
,但感覺非常混亂。 它如果你有一個同樣是行不通的change
從鼠標的前change
從用戶並重訂。 哎呀!
為keyup
事件添加處理程序,而不是按鍵! 如果你使用與keypress相同的處理程序和更改,它在Firefox中不能很好地工作。
$("select").bind('change keyup', select_handler);
和處理程序
function select_handler() {
$(this).val();
};
更改功能將觸發鍵盤輸入:
但不適用於Firefox 10.0.7(所有在Windows 7 Professional,SP1上)
添加:
$('select').keypress(function() {
$(this).change();
});
到$(document).ready-function解決了,如果對我來說,沒有打破其他瀏覽器。
更改事件仍將僅觸發一次(盡管來自按鍵處理程序中的強制更改事件)。
您可以添加keypress
並讓兩個函數調用另一個函數來執行您的實際操作。 這樣復制就不那么糟了。 實際上,回車鍵在firefox中觸發事件
這就是.change()
適用於文本輸入的方式。 您必須專注於更改才能生效。 這也記錄在http://api.jquery.com/change/
change()Api文檔讀取
...當用戶使用鼠標進行選擇時,會立即觸發事件,但對於其他元素類型,事件將延遲,直到元素失去焦點。
更新您可以將按鍵和更改組合在一個實時功能中,如下所示
$('div').live({
'change': function() {},
'keypress': function() {}
})
我在使用IE之前已經看過這個(所有版本,我認為)。 只有輸入失去焦點時才會觸發鍵盤更改事件; 綁定到多個事件是使處理程序像您期望的那樣工作的唯一方法。 您可以通過將處理程序定義為全局函數來殺死一些冗余,然后將其設置為多個事件的處理程序:
function change_handler()
{
// ...stuff...
}
$(document).ready(function() {
$('input.whatever').bind('change keypress other_event ...', change_handler);
});
不像我想的那樣干凈,但它並沒有那么糟糕,而且它有效。
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.