我想实现jquery-ui自动完成,但有一些自定义功能。我正在尝试搜索标签和描述,然后选择一次即可访问该网址。jquery ui自动完成搜索词的随机顺序和链接到url
我已经实现了以任何顺序搜索标签和描述的单词,但正因为如此,我似乎无法引用_renderItem或select函数中的item.desc或item.url。
我相信有一些简单的我在这里失踪,所以任何建议都会很棒。 在此先感谢。
$(function() {
var adminPages = [
{
"label": "Manage pages",
"desc": "here is some text",
"url": "/managepages.aspx"
},
{
"label": "Manage Navigation",
"desc": "here is some text",
"url": "/managenavigation.aspx"
}
];
//var result = adminPages.map(a => a.label);
var result = $.map(adminPages, function (n, i) {
return [[n.label, n.desc]];
});
$(".admin-search").autocomplete({
source: function (requestObj, responseFunc) {
var matchArry = result.slice(); //-- Copy the array
var srchTerms = $.trim(requestObj.term).split(/\s+/);
//--- For each search term, remove non-matches.
$.each(srchTerms, function (J, term) {
var regX = new RegExp(term, "i");
matchArry = $.map(matchArry, function (item) {
return regX.test(item) ? item : null;
});
});
//--- Return the match results.
responseFunc(matchArry);
},
select: function (event, ui) {
//window.location = ui.item.url;
}
})
.data("ui-autocomplete")._renderItem = function (ul, item) {
return $("<li>")
.append("<a>" + item.label +
"<br><span style='font-size: 80%;'>Desc: " + item.desc + "</span>" +
"<br><span style='font-size: 80%;'>Url: " + item.url + "</span></a>")
.appendTo(ul);
};
});
它看起来像'matchArry'不包含'url'元素。会认为你会想要返回'adminPages [J]'。 – Twisty
嗨Twisty,感谢您的评论,我不确定这将实施,但。如果您有时间查看并让我知道,我已添加了代码笔链接。谢谢 –