2011-06-20 82 views
14

http://jqueryui.com/demos/autocomplete/#event-changejQuery UI自動完成:如何讓「更改」事件先發生?

這聽起來像change事件應該是你選擇了一個項目後,火,而是好像火的onblur,但前提是輸入已改變。

select OTOH發生得太早,它在輸入文本更新之前觸發。

我想在用戶選擇一個項目或者在用戶鍵入內容並切換焦點(就像通常的更改事件)之後立即進行輸入。

我該怎麼做?

+0

該文檔指出新選定的值由ui.item引用。你能以這種方式獲得價值嗎?變更項目也會在關閉事件之後始終觸發,這是您提到的關於在onblur事件之前不會觸發的事件。 – Ben

+0

@Ben:close事件在onblur之前被觸發。是的,我可以利用'ui.item',但是我必須處理兩種情況:用戶鍵入某些內容以引起更改,以及用戶選擇某個項目的方式不同(必須以不同方式訪問數據) 。除非我們欺騙......就像我一樣。但現在你提到它,數據似乎在關閉事件觸發之前得到更新*,所以我也可以在那裏觸發更改。 – mpen

+0

它很有趣,它說:「當列表被隱藏 - 不必與改變一起發生。」因爲這兩個事件不會同時發生,即使它們都發生。 – mpen

回答

20

沒關係,想通了。我們可以欺騙:

select: function(event,ui) { 
    this.value=ui.item.value; 
    $(this).trigger('change'); 
    return false; 
} 

更改事件手動設置,手動輸入的值,然後觸發,並返回false,以便它不打擾設置輸入兩次。

+0

真棒的想法 – iMatoria

+0

你讓我從精神崩潰中解脫出來!謝謝! –

相關問題