1976 votes

Comment puis-je définir la valeur par défaut d'un élément HTML <select> ?

Je pensais que l'ajout d'un "value" défini sur le <select> ci-dessous provoquerait l'apparition de l'élément <option> contenant mon fourni "value" pour être sélectionné par défaut :

<select name="hall" id="hall" value="3">
  <option>1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
  <option>5</option>
</select>

Cependant, cela n'a pas fonctionné comme je l'avais prévu. Comment puis-je définir quel <option> est sélectionné par défaut ?

0 votes

Je viens de poster une réponse qui permet de modifier dynamiquement les valeurs par défaut, elle couvre également la sélection multiple. Et elle fonctionne en Reactjs. Elle fait ce que vous voulez et bien plus encore. J'espère que cela aidera quelqu'un.

2786voto

Borealid Points 35075

Définir selected="selected" pour l'option que vous souhaitez voir devenir l'option par défaut.

<option selected="selected">
3
</option>

22 votes

<option value="3" selected="selected"> 3 </option> La valeur serait transmise sous forme de chaîne lorsque l'option 3 est sélectionnée.

5 votes

Et continuez à utiliser l'attribut id pour <Select> et il n'est pas bon d'utiliser l'attribut value pour l'élément html <select>.

257 votes

La partie ="selected" n'est pas nécessaire. Une simple <option sélectionnée> fera l'affaire, comme indiqué dans d'autres réponses.

307voto

RedFilter Points 84190

Exemple complet :

<select name="hall" id="hall"> 
  <option> 
    1 
  </option> 
  <option> 
    2 
  </option> 
  <option selected> 
    3 
  </option> 
  <option> 
    4 
  </option> 
  <option> 
    5 
  </option> 
</select>

14 votes

C'est plus simple que d'utiliser selected="selected".

62 votes

Selected="selected" devrait fonctionner pour tous les doctypes. Le XHTML n'aime pas les attributs sans valeur.

16 votes

@Rodrigo Est-ce vraiment si difficile à écrire ? selected="selected" ? Je veux dire, qu'est-ce que vous économisez ? Du temps ? De la taille ? C'est négligeable et si ça rend le code plus "conforme", pourquoi ne pas le faire ?

76voto

harmender Points 261

Vous pouvez le faire comme ça :

<select name="hall" id="hall">
    <option> 1 </option>
    <option> 2 </option>
    <option selected> 3 </option>
    <option> 4 </option>
    <option> 5 </option>
</select> 

Indiquez le mot-clé "selected" dans la balise d'option, qui doit apparaître par défaut dans votre liste déroulante.

Ou vous pouvez également fournir un attribut à la balise d'option, par exemple.

<option selected="selected">3</option>

13 votes

Pour être clair, la norme w3 est <option selected="selected">3</option>.

42 votes

@JRM Je pense que ce que vous voulez dire est que pour que votre document soit conforme au XHTML, un attribut doit avoir une valeur. En HTML, il n'y a pas besoin de "selected=selected". Les exemples sur w3.org/wiki/HTML/Elements/select , developer.mozilla.org/fr/US/docs/HTML/Element/select ne spécifient pas de valeur. Ce qu'il faut retenir, c'est que selected="false" n'est pas autorisé et selected="" le rend également sélectionné. La seule façon de rendre une option non sélectionnée est de supprimer l'attribut. w3.org/html/wg/drafts/html/master/

4 votes

Je ne comprends jamais comment des questions comme celle-ci peuvent être votées. Elles sont EXACTEMENT comme la bonne réponse pourtant 2 ans plus tard lol

62voto

Florian Points 51

Si vous voulez utiliser les valeurs d'un formulaire et le garder dynamique, essayez ceci avec php

<form action="../<SamePage>/" method="post">

<?php
    $selected = $_POST['select'];
?>

<select name="select" size="1">

  <option <?php if($selected == '1'){echo("selected");}?>>1</option>
  <option <?php if($selected == '2'){echo("selected");}?>>2</option>

</select>
</form>

11voto

Koderground Points 111

Ajoutez cet attribut à la balise d'option :

selected="selected"

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