我正在努力学习网站开发。 在学习jquery的自动完成功能时,我尝试放入标签。
function autocomplete (data) {
var data = data.toString();
var availableTags = data.split(',');
var autocompleteData = [];
for (var i = 0; i < availableTags.length; i++){
autocompleteData[i] = {};
autocompleteData[i].label = i.toString();
autocompleteData[i].value = availableTags[i];
}
$("#tags").autocomplete({
source: autocompleteData,
select: function (event, ui) {
printautocomplete(event, ui)
}
});
};
autocomplete [i] .value是一个有效的字符串。
autocompleteData[0]
Object {label: 0, value: "Peter"}
但是,我没有看到任何建议。 我使用API的方式有什么问题?
API说: &#34;数组:数组可用于本地数据。有两种支持的格式:
An array of strings: [ "Choice1", "Choice2" ]
OR An array of objects with label and value properties: [ { label: "Choice1", value: "value1" }, ... ]
标签属性显示在建议菜单中。当用户选择项目时,该值将插入到input元素中。如果只指定了一个属性,则它将用于两者,例如,如果仅提供值属性,则该值也将用作标签。 &#34; 谢谢。
答案 0 :(得分:0)
我对您的代码中的第2行(var data = String()data;
)持怀疑态度,我会使用:var data = data.toString();
但是如果您确定autocompleteData元素确实具有有效的字符串,那么我最好的猜测是,您可能忘记将'#tags'
id赋予您的html entry字段元素。
最后,如果不是这样,要进行问题排查,我会尝试从您要传递到select:
的对象中的autocomplete()
选项中删除$("#tags").autocomplete(...
选项,以便开始:document.ready()
只传递了源选项。
要检查的另一件事是运行代码。有可能需要'#tags'
函数来确保将自动填充功能添加到ID为{{1}}的DOM元素时,该元素已经创建。
答案 1 :(得分:0)
自动填充功能正常。它不是完成&#34;值&#34;而是完成&#34;标签&#34;。 因此,当我输入&#34; 1&#34;时,它会建议&#34; 1&#34;,&#34; 10&#34;,&#34; 11&#34;等。
答案 2 :(得分:0)
$('#sidebarSearch').autocomplete(
{
source: function(query, result)
{
var query = $('#sidebarSearch').val ();
$.ajax(
{
url:"sidebarSearchFetch.php",
method:"POST",
data:{query:query},
dataType:"json",
success:function(data)
{
result($.map(data, function(item)
{
return {
label: item.name,
value: item.usrId
};
}));
}
})
},
appendTo: "#sidebar-form"
});