我想将一些其他数据附加到框中的结果列表中。例如,我的数据集可能如下所示:
[
{
"name": "John's wild bacon emporium",
"code": "BACON"
},
{
"name": "Jill and Jack's well",
"code": "WELL"
},
{
"name": "Herp and derp",
"code": "HD"
}
]
但是jQueryUI文档说它想要一个扁平的字符串数组。
用户将按名称搜索,而不是代码(让我们假装)。更重要的是,我希望能够在查看select: function(event, ui) {/*...*/}
时访问该代码,无论是通过data-xxx还是其他一些伏都教。我想避免使用第二个列表来匹配字符串与标签内容(假设我们可以以某种方式重复名称,用户永远不会混淆),我只想将代码数据粘贴到名称标签上。
这样的问题是asked in 2008,但从那以后插件就再没有.result()
了。
答案 0 :(得分:13)
但是jQueryUI文档说它想要一个 扁平的字符串数组。
本地数据可以是简单数组 字符串,或包含对象 数组中的每个项目,带有a 标签或值属性或两者兼而有之。
因此,只要您的数据至少数组中的每个对象都有value
属性,小部件就可以处理它:
[
{
"name": "John's wild bacon emporium",
"code": "BACON",
"value": "Bacon",
},
{
"name": "Jill and Jack's well",
"code": "WELL"
"value": "Well"
},
{
"name": "Herp and derp",
"code": "HD",
"value": "Herp"
}
]
用户的查询将与每个对象的value
属性进行匹配(请注意,标签不是必需的;如果要在自动完成选项列表中显示不同于{{1}的内容,请仅指定它})。
您可以访问value
事件处理程序中的项目的额外数据:
select
希望有所帮助。这是一个简单的例子:http://jsfiddle.net/vR3QH/。我删除了select: function(event, ui) {
alert(ui.item.code); // Access the item's "code" property.
}
属性,而只使用name
属性。每次选择一个项目时,value
元素都会使用属于所选项目的属性值进行更新。