jqueryui自动完成:告诉它我的';标签';和';价值';
有没有办法告诉jQuery UI Autocomplete哪些JSON数组索引用作“标签”和“值”,而这些不是JSON数组中使用的索引名 包含我的查找值的aray如下所示(由Firebug记录): 我想使用'id'作为'label','name'作为'value',但不知道如何告诉配置对象 我的数组包含在一个局部变量中——没有进行Ajax调用 通过创建一个隐藏的表单输入,这个问题解决了这个问题,但似乎有一种更干净的方法来处理这个问题。通过阅读文档,您可以尝试以下方法:jqueryui自动完成:告诉它我的';标签';和';价值';,jquery,jquery-ui-autocomplete,Jquery,Jquery Ui Autocomplete,有没有办法告诉jQuery UI Autocomplete哪些JSON数组索引用作“标签”和“值”,而这些不是JSON数组中使用的索引名 包含我的查找值的aray如下所示(由Firebug记录): 我想使用'id'作为'label','name'作为'value',但不知道如何告诉配置对象 我的数组包含在一个局部变量中——没有进行Ajax调用 通过创建一个隐藏的表单输入,这个问题解决了这个问题,但似乎有一种更干净的方法来处理这个问题。通过阅读文档,您可以尝试以下方法: <script>
<script>
$(function() {
var projects = [ { id: "12",value: "Don Davis" }, { id: "17", value:"Stan Smith" } ]
$( "#project" ).autocomplete({
minLength: 0,
source: projects,
focus: function( event, ui ) {
$( "#project" ).val( ui.item.value);
return false;
},
select: function( event, ui ) {
$( "#project" ).val( ui.item.value);
$( "#project-id" ).val( ui.item.id);
return false;
},
search: function(event, ui) { console.log(event); console.log(ui) }
})
.data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.value+"</a>" )
.appendTo( ul );
};
});
</script>
$(函数(){
var项目=[{id:“12”,值:“Don Davis”},{id:“17”,值:“Stan Smith”}]
$(“#项目”).autocomplete({
最小长度:0,
资料来源:项目,
焦点:功能(事件、用户界面){
$(“#项目”).val(ui.item.value);
返回false;
},
选择:功能(事件、用户界面){
$(“#项目”).val(ui.item.value);
$(“#项目id”).val(ui.item.id);
返回false;
},
搜索:函数(事件,ui){console.log(事件);console.log(ui)}
})
.数据(“自动完成”)。\u renderItem=功能(ul,项目){
返回$(“”)
.data(“item.autocomplete”,item)
.append(“+item.value+”)
.附录(ul);
};
});
必须返回如下数组:(端服务器PHP)
(…){$suggest=array('value'=>$value,'label'=>$label);
}只需将结果转换为包含标签值对象列表的数组即可
var list= result.map(function (item) { return { label: item.title, value: item.value }; });
$( "#project" ).autocomplete({
source: list
});
如果您使用函数作为“源”参数,Yu可以做任何您想做的事情。谢谢-docs演示还使用隐藏字段作为“id”(如在您的#project id字段中),因此我想这是官方支持的方法,而不是直接调整JSON数组索引。这种方式可能会表现得更好。再次感谢。请注意,在jQueryUI1.11(可能更早)中,
data(“autocomplete”)
应该是data(“uiAutocomplete”)
var list= result.map(function (item) { return { label: item.title, value: item.value }; });
$( "#project" ).autocomplete({
source: list
});