【发布时间】:2018-04-12 14:16:44
【问题描述】:
我有类似fiddle 的代码设置,但自动完成不会在键入时过滤结果。
jQuery(document).ready(function($) {
var autocompleteTerms = JSON.parse( posts );
$('#post-search').autocomplete({
minLength: 2,
source: function (request, response) {
response($.map(autocompleteTerms, function (value, key) {
return {
label: value.post_title,
value: value.ID
}
}));
},
focus: function(event, ui) {
$('#post-search').val(ui.item.post_title);
return false;
},
change: function (event, ui) {
if (!ui.item) {
$("#post-search").val('');
$('#post-search-result').val('');
}
},
select: function(event, ui) {
$('#post-search').val(ui.item.label);
$('#post-search-result').val(ui.item.value);
return false;
}
});
});
这是 wordpress 插件的一部分,发布变量的数据通过使用
wp_localize_script('post-title-autocomplete', 'posts', [json_encode($results)]);
我需要在我的代码中加入this answer about Filter response in jQuery autocomplete 吗?
【问题讨论】:
-
posts是如何填充的?在定义它之后,您可能想要console.log(autocompleteTerms);,这将确保它在您过滤它之前具有一定的价值。另外,如果是我,我会$.each()与$.map()。 -
看你的小提琴
data,索引post_title不存在。当用户输入内容时,您要搜索什么?名?姓?两者都有? -
@Twisty 有一行说posts var的数据是使用wp_localize_script传递的,因为这是在WordPress中使用的。贴在post中的代码是按照fiddle完成的,并不完全相同。
-
对,但它是如何从服务器变量传递到客户端 JavaScript 的?
-
@Twisty 基本上我从数据库中查询数据,然后对其进行 json_encode。然后当使用 wp_localize_script('post-title-autocomplete', 'posts', [json_encode($results)]);它将创建 JS 对象帖子并用数据填充它(在我的例子中是 json_encode 部分)
标签: javascript jquery jquery-ui autocomplete jquery-ui-autocomplete