Je me bats actuellement avec les listes déroulantes et j'aimerais partager mon expérience :
Il existe des situations spécifiques où <select>
ne peut pas être utilisé et doit être "émulé" avec une liste déroulante.
Par exemple, si vous voulez créer des groupes d'entrée bootstrap, comme des boutons avec des listes déroulantes (voir http://getbootstrap.com/components/#input-groups-buttons-dropdowns ). Malheureusement, <select>
n'est pas pris en charge dans les groupes de saisie, il ne sera pas rendu correctement.
Ou bien quelqu'un a-t-il déjà résolu ce problème ? Je serais très intéressé par la solution.
Et pour rendre les choses encore plus compliquées, vous ne pouvez pas utiliser aussi simplement $(this).text()
pour récupérer ce que l'utilisateur a sélectionné dans la liste déroulante si vous utilisez des glypicônes ou des icônes "font awesome" comme contenu pour la liste déroulante. Par exemple : <li id="someId"><a href="#0"><i class="fa fa-minus"></i></a></li>
En effet, dans ce cas, il n'y a pas de texte et si vous en ajoutez, il sera également affiché dans l'élément de la liste déroulante, ce qui est indésirable.
J'ai trouvé deux solutions possibles :
1) Utilisez $(this).html()
pour obtenir le contenu de l'élément sélectionné <li>
et ensuite de l'examiner, mais vous obtiendrez quelque chose comme <a href="#0"><i class="fa fa-minus"></i></a>
Vous devez donc jouer avec pour extraire ce dont vous avez besoin.
2) Utilisez $(this).text()
et cacher le texte de l'élément dans le span caché : <li id="someId"><a href="#0"><i class="fa fa-minus"><span class="hidden">text</span></i></a></li>
. Pour moi, c'est une solution simple et élégante, vous pouvez mettre n'importe quel texte dont vous avez besoin, le texte sera caché, et vous n'avez pas besoin de faire de transformations de l'image. $(this).html()
résultat comme dans l'option 1) pour obtenir ce dont vous avez besoin.
J'espère que c'est clair et que cela peut aider quelqu'un :-)
20 votes
Voulez-vous dire getbootstrap.com/css/#forms-controls (sous Sélectionne ) ?
0 votes
C'est ainsi que les sélections normales fonctionnent. C'est une liste d'options, vous en sélectionnez une, et elle devient la valeur. En quoi ce que vous demandez est-il différent ?
1 votes
Maintenant, je me demande comment remplacer cette icône de liste déroulante à l'allure artificielle par un joli signe d'insertion :)
0 votes
-prefix-appearance: none
puis utiliser une image de fond ?1 votes
De getbootstrap.com : Évitez d'utiliser les éléments <select> ici car ils ne peuvent pas être entièrement stylisés dans les navigateurs WebKit.
14 votes
Je ne suis pas à l'aise avec l'idée de négliger un contrôle natif au profit d'un cadre visuel. Je suis sincèrement surpris que bootstrap ne propose pas une meilleure solution en utilisant
<select>
. tandis que bootstrap utilise<ul>
pour les drop downs, c'est finalement une utilisation trompeuse de ladite balise. étant donné toute la pompe JQuery dans bootstrap, je me demande pourquoi ils n'ont pas modifié le caret pour select eux-mêmes. Cela semblerait être une solution bien plus gracieuse que de détourner les balisesul
.