Javascript jQuery UI自动完成单击结果提交

Javascript jQuery UI自动完成单击结果提交,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我一直在想,当用户从自动完成选项中选择结果时,如何提交表单。它需要使用鼠标单击或enter按钮。我看到了一些例子,但总是零碎的。没有人显示整个函数 我有下面的代码,但我得到错误,说结果不是函数。我不知道如何结合这个来做我想做的事。感谢您的帮助 jQuery(document).ready(function(){ jQuery("#vsearch").autocomplete("ajax/search.php", { minLength: 2 } ); jQuery("#vs

我一直在想,当用户从自动完成选项中选择结果时,如何提交表单。它需要使用鼠标单击或enter按钮。我看到了一些例子,但总是零碎的。没有人显示整个函数

我有下面的代码,但我得到错误,说结果不是函数。我不知道如何结合这个来做我想做的事。感谢您的帮助

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();
});
});
发件人:

选择-类型:自动完成选择

选择项目时触发 从菜单上;ui.item指的是 所选项目。的默认操作 选择将替换文本字段的 值与选定的 项目取消此事件可防止 该值不会被更新,但不会被更新 不阻止菜单关闭

代码示例

提供一个回调函数来处理 选择事件作为初始选项

$( ".selector" ).autocomplete({
   select: function(event, ui) { ... }
});
按类型绑定到选择事件: 自动完成选择

$( ".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();
    }
});

如果我确定您想要做什么。

实际上,您不需要将for元素和form作为ID的目标。。。因为该信息已经通过事件对象传递给select函数。这样获取表单更好,因为在一个页面上可能有多个表单要应用自动完成。或者您可能希望在多个元素上自动完成

另外,另一个答案中的语法是错误的。JQuery使用.val而不是.value来设置输入的值

下面是一个更正的示例:


顺便说一句,如果你没有做出选择,你就不能提交输入中的内容了吗?谢谢,嗯,当使用选择选项时,按回车键似乎仍然不能提交。我不认为这是你的代码。它可能是自动完成的,因为即使没有选择选项,您也必须选择一些内容,否则将无法使用enter提交。因为如果选择不是你想要的呢?奇怪,如果你有其他建议那就太酷了。又是Thx,我知道它在做什么。如果它最终与您要查找的内容不匹配,并且没有给您任何选择,它将按enter键提交,但只要有选择,它将仅在您选择项目时使用enter键提交。如果是这样的话,我想是这样的。谢谢你帮了我这么多。如果这对你不起作用,请替换$'vsearch'.valueui.item.value;使用$'vsearch.valui.item.value;:-非常感谢,谢谢你。它确实帮助我解决了与此相关的问题。我非常感谢:D+1使用了对象的引用,而不是特定的选择器,例如vsearch。当然,方法是这样的。这应该是选定的答案
$("#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();
    }
});