【发布时间】:2017-10-18 15:25:06
【问题描述】:
我正在尝试实现 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,感谢您的评论,但我不确定这将在哪里实现。如果您有时间看一下并告诉我,我已经添加了代码笔链接?谢谢
标签: jquery jquery-ui autocomplete jquery-ui-autocomplete