2010-02-04 49 views
27

在傳統HTML表單上使用JQuery Autocomplete。JQuery自動完成:在選擇時提交表單?

嘗試提交表單(老式的方式)時,進行選擇。

但輸入框被填寫,然後我必須使第二次按「返回」,或單擊提交按鈕。

我已經嘗試了幾個例子,但我無法讓他們工作。

如何在選擇時自動提交表格?

+0

簡而言之:定義一個回調函數並使用javascript在回調函數中提交表單。不知道如何在代碼中做到這一點。 – Natrium 2010-02-04 09:43:10

回答

42

更新:我終於想出了這一個,下面的代碼應該做的伎倆。由於某種原因,change回調無法正常工作,但回調函數可以執行close & select回調。使用select更好,因爲如果該領域失去焦點,close也將被調用。

$(function() { 
    $("#searchField").autocomplete({ 
     source: "values.json", 
     select: function(event, ui) { 
      $("#searchForm").submit(); } 
    }); 
}); 

另一個更新:好吧,這裏還有與select回調,這是在默認情況下(在上面的代碼中),如果您遍歷自動完成下拉鍵盤出現問題,並與輸入選擇鍵,輸入在表單提交之前被改變。但是,如果您使用鼠標選擇它,表單會在輸入更改前提交,因此提交的值就是用戶輸入的內容(而不是從自動完成下拉列表中選擇的內容)。這似乎工作的woraround是:

$("#searchField").autocomplete({ 
    source: "values.json", 
    minLength: 2, 
    select: function(event, ui) { 
     $("#searchField").val(ui.item.label); 
     $("#searchForm").submit(); } 
}); 
+0

當自動完成提交我的表單時,我會產生相反的影響,但我不希望它有任何建議? – Robert 2016-08-20 17:12:55

5

我不能對@handsofaten回答評論,所以我會加重他的答案在這裏。使用而不是標籤可能更有意義,因爲在某些情況下,我的情況是,標籤不是用戶想要搜索數據庫的用途。

$("#searchField").autocomplete({ 
source: "values.json", 
minLength: 2, 
select: function(event, ui) { 
    $("#searchField").val(ui.item.value); 
    $("#searchForm").submit(); } 
}); 
-4
select: function(event, ui) { 

      if(ui.item){ 

      $(event.target).val(ui.item.value); 

    } 

      $(event.target.form).submit(); 

        }); 
+4

考慮提供解​​釋給你的答案 – arghtype 2014-12-16 11:38:56

0

您提交通過調用Submit按鈕ID在這個領域,即使代碼在其他頁面也選擇存檔。

document.getElementById('submit').click();