2011-03-20 55 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