648 votes

option de sélection par défaut comme vide

J'ai une exigence très étrange, dans laquelle je dois faire en sorte qu'aucune option ne soit sélectionnée par défaut dans un menu déroulant en HTML. Cependant,

Je ne peux pas l'utiliser,

<select>
  <option></option>
  <option>Option 1</option>
  <option>Option 2</option>
  <option>Option 3</option>
</select>

Car, pour cela, je devrai faire une validation pour gérer la première option. Quelqu'un peut-il m'aider à atteindre cet objectif sans inclure la première option dans la balise select ?

3 votes

Pour autant que je sache, c'est le seul moyen d'obtenir une ligne vide. Comment ça, vous devez faire une validation ? Il suffit de définir un contrôle pour dire que si value="", il faut renvoyer false.

2 votes

Ce serait une bonne occasion d'utiliser des boutons radio au lieu d'une liste déroulante.

22 votes

Ce n'est pas une exigence bizarre du tout, à mon avis. Je suis dans le même bateau. J'ai également besoin d'une option par défaut "sans option". J'ai plusieurs listes déroulantes qui ne sont pas nécessaires pour soumettre un formulaire. En les désactivant de cette manière, j'évite que l'utilisateur ait à faire une sélection lorsqu'elle n'est pas pertinente. Bonne question ! +1

12voto

rohan parab Points 199

Cela devrait aider :

https://www.w3schools.com/tags/att_select_required.asp

 <form>
 <select required>
  <option value="">None</option>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>
<button type="submit">Submit</button>
</form>

1 votes

Il s'agit de la manière la plus moderne (html5) de répondre à cette exigence. Sachez que cela nécessite un bouton type=submit. Un bouton de type=submit avec un gestionnaire de soumission onclick ne demande pas automatiquement à l'utilisateur de faire une sélection.

8voto

Andreas Rozek Points 96

Juste une petite remarque :

certains navigateurs Safari ne semblent respecter ni l'attribut "hidden" ni le paramètre de style "display:none" (testé avec Safari 12.1 sous MacOS 10.12.6). Sans texte de remplacement explicite, ces navigateurs affichent simplement une première ligne vide dans la liste d'options. Il peut donc être utile de toujours fournir un texte explicatif pour cette entrée "factice" :

<option hidden disabled selected value>(select an option)</option>

Grâce à l'attribut "désactivé", il ne sera de toute façon pas sélectionné activement.

4voto

Fawaz Points 1186
<select required>
  <option value="" disabled selected>None</option>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

Vous pouvez éviter la validation personnalisée dans ce cas.

2voto

Guryash Singh Points 9

Je comprends ce que vous essayez de faire. Le meilleur moyen et le plus efficace est :

<select name='department' required>
   <option value="">None</option>
   <option value="Teaching">Teaching department</option>
   <option value="nonTeaching">Non-teaching department</option> 
</select>

2voto

farisfath25 Points 43

J'ai trouvé cela très intéressant car j'ai vécu la même chose il n'y a pas si longtemps. Cependant, je suis tombé sur un exemple sur Internet concernant la solution à ce problème.

Sans plus attendre, voyez le fragment de code ci-dessous :

<select>
 <option value data-isdefault="true">--Choose one Option--</option>
 <option>Option 1</option>
 <option>Option 2</option>
 <option>Option 3</option>
</select>

Avec cela, il restera intransmissible mais sélectionnable, à tout moment. Plus pratique pour l'interface utilisateur et excellent pour l'expérience utilisateur.

C'est tout, j'espère que ça vous aidera. A la vôtre !

0 votes

Faire en sorte qu'il ne puisse pas être soumis tout en attirant l'attention de l'utilisateur sur la liste déroulante semble redondant, mais j'aime cette suggestion.

0 votes

@lofacture : merci pour la contribution. en fait, le code que j'ai écrit était celui que je voulais, mais oui comme vous l'avez dit, cela dépend des besoins de l'utilisateur/propriétaire.

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