144 votes

<SELECT multiple> - comment permettre qu'un seul élément soit sélectionné ?

J'ai un <SELECT multiple> avec plusieurs options et je veux permettre qu'une seule option soit sélectionnée en même temps, mais l'utilisateur peut maintenir la touche CTRL enfoncée et sélectionner plusieurs éléments à la fois.

Existe-t-il un moyen de le faire ? (Je ne veux pas supprimer "multiple").

5 votes

Quoi ? Pourquoi ? Cela nécessite plus d'explications.

5 votes

En n'utilisant pas de multiples avec votre sélection ? :)

6 votes

@GordonM ouais totalement :P Je cherchais la même chose aujourd'hui parce que je voulais plusieurs articles pour montrer (qui est implicite avec le multiple ) sans pouvoir réellement en sélectionner plusieurs. J'ai oublié que l'attribut permettant de faire cela s'appelait size La réponse du haut m'a donc bien servi :)

303voto

Marcos Placona Points 8351

Il suffit de ne pas en faire un multiple de sélection, mais de lui donner une taille, par exemple :

  <select name="user" id="userID" size="3">
    <option>John</option>
    <option>Paul</option>
    <option>Ringo</option>
    <option>George</option>
  </select>

Exemple de travail : https://jsfiddle.net/q2vo8nge/

0 votes

Est-il possible de compter par programme le nombre total de <option> dans l'attribut size ?

1 votes

@Natasha Vous pouvez obtenir la valeur du champ taille en utilisant jquery :-)

1 votes

Informations sur la taille : Placer le select à l'intérieur d'un display: flex conteneur, et faire flex-grow: 1 sur le select l'amènera à traiter size="3" comme hauteur minimale, puis fixez la hauteur de l'ensemble de la sélection à la taille maximale possible dans votre conteneur. jsfiddle.net/z1gypahs

28voto

MacGucky Points 1841

Si l'utilisateur ne doit sélectionner qu'une seule option à la fois, il suffit de supprimer le "multiple" et d'effectuer une sélection normale :

  <select name="mySelect" size="3">
     <option>Foo</option>
     <option>Bar</option>
     <option>Foo Bar</option>
     <option>Bar Foo</option>
  </select>

Violon

10voto

David Points 65209

Pourquoi ne voulez-vous pas retirer le multiple ? L'objectif de cet attribut est de spécifier au navigateur que plusieurs valeurs peuvent être sélectionnées à partir de l'attribut select élément. Si une seule valeur doit être sélectionnée, supprimez l'attribut et le navigateur saura qu'il n'autorise qu'une seule sélection.

Utilisez les outils que vous avez, ils sont là pour ça.

2 votes

Ah. l'attribut size fonctionne aussi en standalone. je n'avais pas remarqué. merci.

7 votes

@simPod le raisonnement étant qu'il y a des moments où les clients ont besoin de voir toutes les options devant eux, mais ne peuvent en choisir qu'une. Cela fait tellement longtemps que je n'ai pas écrit de "vrai" html, que j'ai dû chercher la réponse sur Google... Oh, merci au ciel pour StackOverflow certains jours.

1voto

Ajay2707 Points 779

Je viens ici après avoir fait des recherches sur Google et changé les choses à ma fin.

Donc je change juste cet échantillon et il fonctionnera avec jquery au moment de l'exécution.

$('select[name*="homepage_select"]').removeAttr('multiple')

http://jsfiddle.net/ajayendra2707/ejkxgy1p/5/

1voto

Ewan Points 21

J'ai eu des problèmes avec la sélection multiple. Voici ce qui a fonctionné pour moi

<select name="mySelect" multiple="multiple">
    <option>Foo</option>
    <option>Bar</option>
    <option>Foo Bar</option>
    <option>Bar Foo</option>
</select>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X