J'utilise un menu déroulant (select/object html one), qui est généré dynamiquement en prenant des données d'un DB, en utilisant une page jsp.Modification en temps réel du menu html coulissant
J'ai également un champ de texte d'entrée, où je peux rechercher des choses du menu coulissant. Je veux écrire la racine d'un mot qui est contenu dans mon menu, et mon menu doit "redimensionner" montrant tous les éléments avec la racine que j'ai écrite, et seulement ceux-là.
Je ne peux pas utiliser les opérations côté serveur (comme l'envoi de données par la poste) mais j'ai besoin de résoudre ce côté client (parce que j'ai besoin de ce résultat immédiatement).
J'ai effectivement résolu ce problème en utilisant javascript, mais j'ai quelques problèmes de performance avec cette solution, parce que je dois utiliser IE 8.
est-il une solution similaire en utilisant JQuery ou Ajax?
Voici quelque chose de similaire à mon code:
HTML:
<select multiple id="testSelect">
<option>test</option>
<option>temp</option>
<option>cast</option>
<option>dest</option>
<option>inst</option>
</select>
<input type="text" value="" onkeyup="searhSelect(this)" />
fonction searhSelect sera appelée à chaque pression de touche (lorsque l'utilisateur relâchez une touche en fait) et filtrera objet #testSelect.
JS:
var optionsList;
function searhSelect(el) {
var select = document.getElementById('testSelect');
if(!optionsList) {
optionsList = select.cloneNode(true); //copy select to a variable for future use
}
select.innerHTML = "";//remove all options.
for(var i =0; i < optionsList.options.length; i++) {
var opt = optionsList.options[i];
if(opt.innerHTML.indexOf(el.value) != -1) {
select.appendChild(opt.cloneNode(true));
}
}
}
Combien d'éléments avez-vous? Dans cet élément DOM cloné searchSelect est utilisé. Peut-être stocker des éléments dans le tableau JS régulière aidera. –
Je suppose que plus de 10k éléments. Quand je commence à taper, il faut 20 secondes pour terminer la tâche. Comment puis-je stocker mes éléments dans un tableau JS normal? Malheureusement, je ne suis pas si "intelligent" sur JS ... – abierto
Hm ... 10k éléments? C'est beaucoup. Ne pensez pas que même JS array aidera réellement ... AJAX peut vous aider, mais une fois que vous essayerez de montrer une grande quantité d'éléments - il sera lent quand même (à cause de la mise à jour lente de dom). –