2010-02-04 50 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();