2011-03-20 51 views
13

我一直在試圖找出如何提交表單時,人選擇自動完成的選擇結果。它需要使用鼠標點擊或輸入按鈕。我看到那裏的例子,但總是分成幾部分。沒有人顯示整個功能。jQuery UI自動完成提交onclick結果

我有下面的代碼,但我得到的錯誤說結果不是一個函數。我不知道如何結合這個來做我想做的事。任何幫助表示讚賞。

jQuery(document).ready(function(){ 

jQuery("#vsearch").autocomplete("ajax/search.php", 
    { 
    minLength: 2 
} 
); 
jQuery("#vsearch").result(function(event, data, formatted) { 
     jQuery('#vsearch').value(formatted); 
     jQuery('#search').submit(); 
}); 
}); 

回答

31

來自:http://api.jqueryui.com/autocomplete/#event-select

選擇 - 類型:autocompleteselect

當選擇從菜單 的項目觸發; ui.item引用 所選項目。 select的默認操作是將文本字段的 值替換爲所選 項目的值。取消此事件可防止 的值被更新,但 不會阻止菜單關閉。

代碼示例

提供一個回調函數來處理 作爲init選項select事件。

$(".selector").autocomplete({ 
    select: function(event, ui) { ... } 
}); 

綁定到選擇事件按類型: autocompleteselect。

$(".selector").bind("autocompleteselect", function(event, ui) { 
    ... 
}); 

,因此會使用:

編輯:(修改的情況下,用戶沒有選擇任何東西)

$("#vsearch").autocomplete({ 
    source: "ajax/search.php", 
    minLength: 2, 
    select: function(event, ui) { 
     if(ui.item){ 
      $('#vsearch').val(ui.item.value); 
     } 
     $('#search').submit(); 
    } 
}); 

如果我相信你想要做什麼的。

+0

是的,偉大工程。很簡單。 :) – 2011-03-20 01:38:40

+0

很高興聽到它; D – mattsven 2011-03-20 01:42:39

+0

順便說一句,它你不做出選擇,你無法提交什麼輸入反正呢? – 2011-03-20 01:49:49

27

實際上,您不需要通過ID定位for元素和窗體...因爲該信息已通過Event對象傳遞給select函數。以這種方式獲取表單更好,因爲您可能在要應用自動完成功能的頁面上有多個表單。或者你可能想要在多個元素上自動完成。

此外,其他答案中的語法是錯誤的。 JQuery使用.val()不是.value()來設置輸入的值。

這裏有一個修正的例子:

$("#vsearch").autocomplete({ 
    source: "ajax/search.php", 
    minLength: 2, 
    select: function(event, ui) { 
     //assign value back to the form element 
     if(ui.item){ 
      $(event.target).val(ui.item.value); 
     } 
     //submit the form 
     $(event.target.form).submit(); 
    } 
}); 
+3

+1使用對象的引用而不是特定的選擇器(例如「#vsearch」)。 – 2013-08-16 09:57:47

+0

完美答案! – fjckls 2013-09-24 09:04:55

+0

一定要走這條路。 – 2016-05-18 12:03:37