Javascript jQuery自动完成json源代码-不自动完成,只显示完整列表
我使用jQueryUI的自动完成功能Javascript jQuery自动完成json源代码-不自动完成,只显示完整列表,javascript,jquery,json,user-interface,autocomplete,Javascript,Jquery,Json,User Interface,Autocomplete,我使用jQueryUI的自动完成功能 $("#search").autocomplete({ minLength: 0, source: 'source.php', select: function( event, ui ) { $("#search").val(ui.item.label); return false; }, focus: function(event, ui) { $("#search").val(ui.item.label); return
$("#search").autocomplete({
minLength: 0,
source: 'source.php',
select: function( event, ui ) {
$("#search").val(ui.item.label);
return false;
},
focus: function(event, ui) {
$("#search").val(ui.item.label);
return false;
}
}))
我在source.php中插入多个元素并返回json编码的元素
$search[] = array(
'value' => $id,
'label' => $name
);
echo json_encode($search);
当我开始在autocomplete字段中键入时,会显示一个包含source.php元素的列表。但不幸的是,他们都是。根据我在字段中输入的内容,它们不会被过滤
当我使用json时,是否需要设置任何特殊选项
编辑:多亏了T.J.Crowder,我想出了这个解决方案,让jQuery完成这项工作;)
从文档中看不明显,但是当您提供任何涉及运行代码(服务器端或客户端)的
source
时,jqueryui自动完成程序希望您过滤结果。对于服务器端代码,您将使用它传递给PHP文件的术语参数。发件人:
使用字符串时,Autocomplete插件希望该字符串指向将返回JSON数据的URL资源。它可以在同一台主机上,也可以在不同的主机上(必须提供JSONP)。请求参数“term”被添加到该URL中。数据本身可以采用与上述本地数据相同的格式
(如果他们真的提到了过滤,那就太好了;我建议他们这样做。更新:他们花了不到三个小时的时间更新文档并解决问题;新文档将在某个时候推送,至少在v1.9版之前。很好!)
autocompleter允许您以三种方式提供源:
- 静态源数组:在这种情况下,自动完成程序进行过滤
- 服务器端调用:在这种情况下,它传递一个
术语
参数,您需要使用它进行筛选
- 客户端调用:在这种情况下,它将
请求
对象传递给具有术语
属性的客户端代码;你应该用它来过滤
谢谢,就这样。我读的正是这句话,但正如你所说,他们没有提到“自己过滤”部分:)
$.getJSON('source.php', function(search) {
$("#search").autocomplete({
minLength: 0,
source: search,
select: function( event, ui ) {
$("#search").val(ui.item.label);
return false;
},
focus: function(event, ui) {
$("#search").val(ui.item.label);
return false;
}
});