4
votes

Pourquoi la valeur par défaut de l'entrée [type = radio] est «on» au lieu de «»?

Il suffit d'afficher le code:

<input type="radio">

<button onclick="show()">Show value</button>
function show() {
  console.log(document.querySelector('input[type=radio]').value) // 'on'
}


1 commentaires

C'est la valeur par défaut pour les radios et les cases à cocher, vous pouvez définir explicitement la valeur en HTML ou par JS / jQ.

<input type="radio" value="Another Value">
<script>
  console.log(document.querySelector('input[type=radio]').checked)
  console.log(document.querySelector('input[type=radio]').value) // 'on'
</script>


0 commentaires

2
votes

Par défaut, les boutons radio (comme les boutons) ont la valeur sur . Vous devez le spécifier en donnant à la balise un attribut value , et très probablement un attribut name . par exemple

<input type="radio" name="category" value="1">

Le nom spécifie à quel groupe ce bouton appartient, et valeur spécifie quelle est la signification du bouton sélectionné, vous pouvez en savoir plus ici .


0 commentaires

0
votes

Parce que le contexte de l'entrée radio comme entrée est qu'il devrait toujours y avoir une valeur sélectionnée.

C'est le contraire de la case à cocher dans le contexte, vous pouvez désactiver une valeur.

Utilisez ce qui est nécessaire bien que ces valeurs par défaut puissent être remplacées.


0 commentaires

2
votes

La page MDN pour le < input> element indique ceci simplement:

La valeur par défaut pour les cases à cocher et les boutons radio est on .

Cette valeur par défaut a plus de sens pour les cases à cocher: si vous spécifiez une case à cocher nommée foo , la soumission d'un formulaire avec cette case cochée envoie au serveur la chaîne foo = on . C'est plus pratique que de lui envoyer foo = , donc la chaîne vide ne serait pas une valeur par défaut pratique.

Étant donné que les boutons radio sont essentiellement une extension des cases à cocher, cette valeur par défaut a probablement été appliquée aux deux lorsque leur comportement a été conçu pour la première fois.


2 commentaires

C'est la seule réponse qui tente réellement de répondre à la question. Les autres réponses disent toutes simplement «juste parce que».


@MrLister Pour être honnête, on ne sait pas vraiment ce que le PO attendait, donc ma réponse et celle de Mike Zinn répondent en quelque sorte à des interprétations différentes de la question.