【问题标题】:jQuery UI autocomplete submit onclick resultjQuery UI 自动完成提交点击结果
【发布时间】:2011-03-20 01:05:02
【问题描述】:

我一直在试图弄清楚当人们从自动完成选项中选择结果时如何提交表单。它需要通过鼠标单击或输入按钮来工作。我看到了一些例子,但总是零散的。没有人展示整个功能。

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

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

【问题讨论】:

    标签: javascript jquery jquery-ui


    【解决方案1】:

    发件人:http://api.jqueryui.com/autocomplete/#event-select

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

    选择项目时触发 从菜单中; 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();
        }
    });
    

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

    【讨论】:

    • 顺便说一句,如果您没有做出选择,那么您无论如何都不能提交输入中的内容?
    • 谢谢,嗯,使用选择选项时,似乎仍然无法通过按 Enter 提交。我不认为它是你的代码。它可能是自动完成的,因为即使没有选择选项,您也必须选择一些东西,否则它不会使用 enter 提交。因为如果选择不是你想要的怎么办?奇怪,如果你有任何其他的建议会很酷。再次感谢。
    • 我知道它在做什么。如果它最终与您要查找的内容不匹配并且没有给您任何选择,它将提交按回车键,但只要有选择,它只会在您选择项目时使用回车键提交。如果这就是它的工作方式,我猜它是如何工作的。谢谢你让我走这么远。
    • 如果这对您不起作用,请将 $('#vsearch').value(ui.item.value); 替换为 $('#vsearch').val(ui.item.value); :-)
    • 非常感谢,为此。它真的帮助我解决了与此相关的问题。一千感谢我:D
    【解决方案2】:

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

    【讨论】:

    • +1 用于使用对象的引用而不是特定的选择器(例如“#vsearch”)。
    • 绝对是这样。
    • 这应该是选择的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2015-08-09
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多