我有一个当前正在运行的输入,可以正确搜索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。对不起,感到困惑。
答案 0 :(得分:0)
我在插件的源代码中找不到任何可以帮助你的东西,但这里是一个替代解决方案,使用jQuery UI的自动完成小部件。
您始终可以从jQuery UI自动完成小部件中触发.search()
方法。
这是它的作用:
如果未取消事件,则触发搜索事件并调用数据源。可以由类似选择框的按钮用于在单击时打开建议。在没有参数的情况下调用时,将使用当前输入的值。
您所要做的就是确保从远程数据源(来自AJAX调用)提供源信息。您可以在following answer中找到如何执行此操作。
答案 1 :(得分:0)
我能够成功地将URL值传递给输入并通过将以下代码放入setTimeout函数(1000为我工作)进行搜索:
$('#input').autocomplete('onValueChange');
如果在自动填充有机会启动之前价值已经过去,则似乎会出现问题。