J'essaie d'implémenter la saisie semi-automatique jquery-ui, mais avec des fonctionnalités personnalisées. J'essaye de rechercher l'étiquette et la description et puis une fois choisi pour aller à l'url.Jquery ui autocomplete recherche de mots dans un ordre aléatoire et de liaison à l'URL
J'ai implémenté la recherche d'étiquettes et de descriptions avec des mots dans n'importe quel ordre, mais pour cette raison, je ne peux pas faire référence à item.desc ou item.url dans _renderItem ou dans la fonction select.
Je suis sûr qu'il y a quelque chose de simple qui me manque ici, donc tout conseil serait génial. Merci d'avance.
$(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);
};
});
Il semble que 'matchArry' ne contienne pas l'élément' url'. Je pense que vous voudriez retourner 'adminPages [J]'. – Twisty
Salut Twisty, merci pour le commentaire, je ne sais pas où cela serait mis en œuvre cependant. J'ai ajouté un lien de stylo de code si vous avez le temps pour regarder et me faire savoir? Merci –