Aujourd'hui (2015-02-25)
Il s'agit d'un code HTML5 valide qui envoie un blanc (et non un espace) au serveur :
<option label=" "></option>
Validité vérifiée le http://validator.w3.org/check
Comportement vérifié avec Win7(IE11 IE10 IE9 IE8 FF35 Safari5.1) Ubuntu14.10(Chrome40, FF35) OSX_Yosemite(Safari8, Chrome40) Android(Samsung-Galaxy-S5)
Le texte suivant passe également la validation aujourd'hui mais transmet au serveur une sorte d'espace dans la plupart des navigateurs (ce qui n'est probablement pas souhaitable) et un blanc dans d'autres (Chrome40/Linux transmet un blanc) :
<option> </option>
Précédemment (2013-08-02)
D'après mes notes, l'entité non-breaking-space à l'intérieur des balises d'option présentées ci-dessus a produit l'erreur suivante en 2013 :
Erreur : Service de validation de balisage du W3C (public) : Le premier élément enfant option enfant d'un élément select avec un attribut required et sans attribut multiple multiple, et dont la taille est 1, doit avoir soit un attribut value vide, soit un contenu textuel nul. vide, ou ne doit pas avoir de contenu textuel.
À l'époque, un espace normal était un XHTML4 valide et envoyait un blanc (et non un espace) au serveur à partir de chaque navigateur :
<option> </option>
Futur
Je serais heureux si la spécification était mise à jour pour permettre explicitement une option vide. De préférence en utilisant la syntaxe la plus brève possible. L'une ou l'autre des options suivantes serait parfaite :
<option />
<option></option>
Fichier de test
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Test</title>
</head>
<body>
<form action="index.html" method="post">
<select name="sel">
<option label=" "></option>
</select>
</form>
</body>
</html>
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
2 votes
Ce n'est pas une exigence bizarre, si le SELECT a un attribut REQUIRED, alors avoir une option d'étiquette de remplacement est une exigence du HTML5. dev.w3.org/html5/spec-preview/
2 votes
@Blazemonger les boutons radio sont une idée terrible si vous avez plus de 3 ou 4. Imaginez une liste déroulante avec plus de 15 options, ou 50 ou plus ? Ces listes ont leurs propres problèmes de conception dans de nombreux cas, mais le problème reste le même : les boutons radio ne sont pas adaptés. du tout .