jQuery自动完成从URL查询字符串搜索

时间:2017-05-25 18:39:45

标签: jquery autocomplete

我有一个当前正在运行的输入,可以正确搜索JSON数组并根据所选的内容显示内容。但是,我正在尝试向搜索工具添加功能,以允许它接受URL中的查询字符串。

即:“site.com?s=test”将填写输入并搜索“test”

我能够正确解码URI,并将变量传递给输入。但是,它不会“搜索”,实际上需要删除一个字符并重新输入,以便接受搜索字词。

这是我正在使用的jQuery自动填充:https://github.com/devbridge/jQuery-Autocomplete

我还要注意,我可以将搜索词粘贴到输入中,然后搜索,但如果它从URL中获取值,则似乎忽略了搜索功能。

            var urlParams;
            (window.onpopstate = function () {
                var match,
                    pl     = /\+/g,  // Regex for replacing addition symbol with a space
                    search = /([^&=]+)=?([^&]*)/g,
                    decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
                    query  = window.location.search.substring(1);

                urlParams = {};
                while (match = search.exec(query))
                   urlParams[decode(match[1])] = decode(match[2]);
            })();

            $("#input").val(urlParams["s"]);

            $("#input").autocomplete({
                lookup: names,
                onSelect: function (suggestion) {
                    // code here for output
                }
            });

不确定我错过了什么。

jfyi - 问题标签保持默认为jquery-ui-autocomplete而不是jquery-autocomplete。对不起,感到困惑。

2 个答案:

答案 0 :(得分:0)

我在插件的源代码中找不到任何可以帮助你的东西,但这里是一个替代解决方案,使用jQuery UI的自动完成小部件。

您始终可以从jQuery UI自动完成小部件中触发.search()方法。

这是它的作用:

  

如果未取消事件,则触发搜索事件并调用数据源。可以由类似选择框的按钮用于在单击时打开建议。在没有参数的情况下调用时,将使用当前输入的值。

您所要做的就是确保从远程数据源(来自AJAX调用)提供源信息。您可以在following answer中找到如何执行此操作。

答案 1 :(得分:0)

我能够成功地将URL值传递给输入并通过将以下代码放入setTimeout函数(1000为我工作)进行搜索:

        $('#input').autocomplete('onValueChange');

如果在自动填充有机会启动之前价值已经过去,则似乎会出现问题。