11
votes

Filtrer les options en double sur Sélectionner une liste déroulante

J'ai un sélecteur déroulant généré à partir d'une liste et souhaitez filtrer les options pour supprimer les entrées en double. par exemple. Je veux filtrer ... xxx

... DOWN pour présenter l'utilisateur avec quelque chose comme ... xxx

(les données Protection d'une recherche SharePoint sur une autre liste et je pense que je peux utiliser JQuery pour ne garder que les options uniques sans avoir à aller dans les tripes de ce qui se passe.) Puis-je supprimer des options comme celle-ci? Merci.


0 commentaires

3 Réponses :


6
votes

Vous pouvez faire quelque chose comme ceci:

var previousOption;
$('select[name=company] option').each(function() {
    if (this.text == previousOption) $(this).remove();
    previousOption= this.text;
});


3 commentaires

Pensez que vous allez vouloir le texte () pas val () dans ce cas.


Trois notes: 1. Je pense que vous voudriez utiliser du texte () plutôt que Val (); puisque les valeurs semblent être différentes. 2. Cela n'attacerait pas un cas où des valeurs en double alternent (c'est-à-dire Microsoft, Apple, Microsoft), bien que cela ne soit pas clair de la question initiale, que ce soit une possibilité. 3. Je recommanderais d'appeler $ (Ceci) uniquement une fois au début de la fonction (i.e. var option = (ceci); ), comme je pense que c'est une opération modérément coûteuse.


Merci pour les bonnes pensées. Val (), cependant, ont renvoyé la valeur correcte pour moi dans ce cas. Je suis d'accord, le texte serait mieux.



32
votes

Vous pouvez le faire avec une boucle simple - il peut y avoir un moyen intelligent de gérer cela avec des sélecteurs jQuery que je ne vois pas, cependant. Les éléments suivants doivent fonctionner: xxx

EDIT: Voici une doublure de style fonctionnel qui le fait avec l'aide de l'excellent Underscore.js , bien que la version précédente soit presque certainement plus efficace: xxx


1 commentaires

Merci. C'est à peu près ce que je cherchais, mais je me suis livré avec la syntaxe JS.



5
votes

Vous pouvez essayer le code suivant, il supprimera les doublons indépendamment de leur position. Ici #targetselect est votre liste déroulante ciblée xxx


0 commentaires