4

我有一個使用jQuery UI自動完成的文本輸入元素。輸入具有綁定到它的onchange事件,以根據用戶的選擇更改其他表單值。我還想在用戶從自動完成中選擇一個選項時更改這些其他表單值。單擊jQuery UI自動完成時禁止輸入的onchange

問題是,如果用戶正在查找「啤酒」,但只鍵入「蜜蜂」,然後點擊自動完成中的啤酒選項,輸入的onchange會以「蜜蜂」的值觸發,然後自動完成的選擇功能會觸發(使用正確的「啤酒」值)。由於這些處理程序都使用ajax調用來查找某些內容,所以我陷入了競爭狀態。

我的問題是:是否有某種方式,我可以有平變化或者不火,或中止,在該情況下,用戶對自動完成選項點擊。注意:這隻發生在單擊時,只使用鍵盤選擇一個選項不會觸發輸入的onchange。

當自動完成處於活動狀態時,我完全禁用onchange並不是一種選擇,因爲可以肯定的是用戶只需要繼續輸入,並且不用從自動完成中選擇任何內容即可退出輸入。

我所做的console.log公平的位()'ING,和所有其他活動中,我能想到的,包括輸入的事件的內容,自動完成的項目的焦點,等前onchange事件火災

回答

4

這個問題恰恰是自動完成change事件的原因。這聽起來像你應該能夠利用這一事件來執行基於用戶是否邏輯選擇項目(從而去除您onchangeautocompleteselect事件處理程序)。例如:

$("#auto").autocomplete({ 
    source: ['hi', 'bye', 'foo', 'bar'], 
    change: function (event, ui) { 
     if (ui.item) { 
      /* user selected an item */   
     } else { 
      /* user entered a new item */ 
     } 
    } 
}); 

例子:http://jsfiddle.net/bdDs7/

+0

安德魯 - 非常感謝你。這種改變方法的使用正是我所需要的。 – 2012-03-03 00:59:58

+0

@AndrewWhitaker對此有何想法? http://stackoverflow.com/q/20513604/829533 – zzlalani 2013-12-11 10:50:11