2011-06-10 71 views
3

我正在使用jQuery UI自動完成小部件。 我需要使用選定的文本進行進一步處理,直接更改或選擇後。鼠標點擊後的jQuery UI自動完成值是舊值

但是當用戶點擊建議值時,類型值會被傳遞。

$("#autocomplete").autocomplete({ 
source: function(req, resp) { 
    $.post("/echo/json/", { 
     json: '["Test1", "Test2", "Test3", "Test4", "Test5"]', 
     delay: 1 
    }, function(data) { 
     resp(data); 
    }, "JSON"); 
}, 
select: function (event, ui) { alert($(this).val())} 
}); 

在此小提琴的一個例子:(嘗試鍵入 「TES」,並通過鼠標選擇一個建議)

http://jsfiddle.net/M3Yur/

我需要使用的輸入值。一個更改事件使用輸入值,它需要在選擇自動完成項目的兩種情況下都可以工作,而且只需鍵入一個值就可以了,因此警報僅供示例使用。

任何方法來解決這個問題?

編輯: 我結束了使用:$(this).val(ui.item.value).val(); 這個解決方案總是獲得更改事件後的預期值。

回答

4

更改此:

select: function (event, ui) { alert($(this).val())} 

要這樣:

select: function (event, ui) {alert(ui.item.value);} 

新小提琴:http://jsfiddle.net/M3Yur/4/

+0

是對我來說:) – Jon 2011-06-10 00:21:22

+0

Thanx Jon/Jen,警報是一個例子,我需要使用輸入值。更改事件使用輸入值時,需要在選擇自動完成項目時以及在僅輸入值時才能工作 – Arnoldiusss 2011-06-10 00:27:08

+0

您有兩個值。也許如果我們知道更改事件何時啓動? – 2011-06-10 00:42:54

2

ui參數包含你正在尋找的信息:

select: function (event, ui) { alert(ui.item.value); } 
+0

請參閱http://jqueryui.com/demos/autocomplete/#events - >'select()'方法 – GregL 2011-06-10 00:22:48