J'utilise jQuery UI Autocomplete.
$("#task").autocomplete({
max:10,
minLength:3,
source: myarray
});
Le paramètre max ne fonctionne pas et j'obtiens toujours plus de 10 résultats. Est-ce que je manque quelque chose?
Voici le documentation appropriée pour le widget jQueryUI . Il n'y a pas de paramètre intégré pour limiter le maximum de résultats, mais vous pouvez le faire facilement:
$("#auto").autocomplete({
source: function(request, response) {
var results = $.ui.autocomplete.filter(myarray, request.term);
response(results.slice(0, 10));
}
});
Vous pouvez fournir une fonction au paramètre source
, puis appeler slice
sur le tableau filtré.
Voici un exemple de travail: http://jsfiddle.net/andrewwhitaker/vqwBP/
Vous pouvez définir l’option minlength
sur une grande valeur ou vous pouvez le faire en css comme ceci,
.ui-autocomplete { height: 200px; overflow-y: scroll; overflow-x: hidden;}
Même chose que "Jayantha" a déclaré que l'utilisation de CSS serait l'approche la plus simple, mais que cela pourrait être mieux,
.ui-autocomplete { max-height: 200px; overflow-y: scroll; overflow-x: hidden;}
Notez que la seule différence est "hauteur maximale". cela permettra au widget de redimensionner à une hauteur inférieure mais pas plus de 200px
En ajoutant la réponse d'Andrew , vous pouvez même introduire une propriété maxResults
et l'utiliser de cette façon:
$("#auto").autocomplete({
maxResults: 10,
source: function(request, response) {
var results = $.ui.autocomplete.filter(src, request.term);
response(results.slice(0, this.options.maxResults));
}
});
jsFiddle: http://jsfiddle.net/vqwBP/877/
Cela devrait améliorer la lisibilité et la maintenabilité du code!
voici ce que j'ai utilisé
.ui-autocomplete { max-height: 200px; overflow-y: auto; overflow-x: hidden;}
Le débordement automatique afin que la barre de défilement ne s'affiche pas quand ce n'est pas censé être.
Je pourrais résoudre ce problème en ajoutant le contenu suivant à mon fichier CSS:
.ui-autocomplete {
max-height: 200px;
overflow-y: auto;
overflow-x: hidden;
}
Si les résultats proviennent d'une requête mysql, il est plus efficace de limiter directement le résultat mysql:
select [...] from [...] order by [...] limit 0,10
où 10 est le nombre maximum de lignes que vous voulez
J'ai essayé toutes les solutions ci-dessus, mais la mienne n'a fonctionné que de cette façon:
success: function (data) {
response($.map(data.slice (0,10), function(item) {
return {
value: item.nome
};
}));
},
jQuery vous permet de modifier les paramètres par défaut lorsque vous attachez la saisie semi-automatique à une entrée:
$('#autocomplete-form').autocomplete({
maxHeight: 200, //you could easily change this maxHeight value
lookup: array, //the array that has all of the autocomplete items
onSelect: function(clicked_item){
//whatever that has to be done when clicked on the item
}
});
Plugin: jquery-ui-autocomplete-scroll avec scroller et limite les résultats sont magnifiques
$('#task').autocomplete({
maxShowItems: 5,
source: myarray
});
Je l'ai fait de la manière suivante:
success: function (result) {
response($.map(result.d.slice(0,10), function (item) {
return {
// Mapping to Required columns (Employee Name and Employee No)
label: item.EmployeeName,
value: item.EmployeeNo
}
}
));
Dans mon cas, cela fonctionne bien:
source:function(request, response){
var numSumResult = 0;
response(
$.map(tblData, function(rowData) {
if (numSumResult < 10) {
numSumResult ++;
return {
label: rowData.label,
value: rowData.value,
}
}
})
);
},
Il n'y a pas de paramètre max.