jQuery UI自动完成提交onclick结果

时间:2011-03-20 01:05:02

标签: javascript jquery jquery-ui

当用户从自动填充选项中选择结果时,我一直试图弄清楚如何提交表单。它需要单击鼠标或输入按钮。我看到那里的例子,但总是分片。没有人展示整个功能。

我在下面有这个代码,但是我得到错误,说结果不是函数。我不知道如何将它结合起来做我想做的事情。任何帮助表示赞赏。

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

2 个答案:

答案 0 :(得分:30)

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

  

选择 - 输入:autocompleteselect

     

选择项目时触发   从菜单; ui.item指的是   选定的项目。默认操作   select是替换文本字段的   值与所选的值   项目。取消此事件会阻止   更新的价值,但确实如此   不要阻止菜单关闭。

     

代码示例

     

提供回调函数来处理   select事件作为init选项。

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

按类型绑定到select事件:   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();
    }
});

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

答案 1 :(得分:28)

实际上,您不需要通过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();
    }
});