Als ik in een invulformulier een dropdownmenu heb geplaatst en de invuller van het formulier heeft geen keuze gemaakt in dat menu (omdat ie het antwoord niet weet; ik wil het niet verplicht stellen), dan zie ik als resultaat terug "maak uw keuze". Maar is dat een browser- en taalafhankelijke weergave?
Hoe bepaal ik in een if-then-analyse of een invuller daar geen keuze heeft gemaakt?

Alvast bedankt voor jullie hulp

Vriendelijke groet,
Guido
Maar is dat een browser- en taalafhankelijke weergave?

Naar alle waarschijnlijkheid is dat gewoon de eerste optie in het rijtje. Dit lijkt mij browser onafhankelijk. Afhankelijk van de site zelf -of deze meerdere talen ondersteunt- kan dit taalafhankelijk zijn, maar dit is iets wat de site zelf moet ondersteunen d.m.v. code lijkt mij (tenzij HTML5 hier iets hips voor heeft ofzo).

Hoe bepaal ik in een if-then-analyse of een invuller daar geen keuze heeft gemaakt?

Deze eerste/default optie ("Maak een keuze") heeft meestal een lege waarde voor de value property. Je zou dus een controle kunnen doen waarbij je vergelijkt met een lege string.
>> Naar alle waarschijnlijkheid is dat gewoon de eerste optie in het rijtje. Dit lijkt mij browser onafhankelijk.

Klopt, dat is inderdaad conform de HTML5-specificatie:
If the multiple attribute is absent and the element's display size is 1, then whenever there are no option elements in the select element's list of options that have their selectedness set to true, the user agent must set the selectedness of the first option element in the list of options in tree order that is not disabled, if any, to true.
Klinkt alsof Guido geen value attribuut gebruikt terwijl dit een goede oplossing zou kunnen zijn:


<select name="myselect">
<option value="-1">Maak Uw keuze</option>
<option value="0">Aardbeien</option>
<option value="1">Banaan</option>
</select>


Nu heb je een select die niet taalafhankelijk is en waar de -1 staat voor geen keuze gemaakt.
Maar dit kan ook:

<select name="myselect">
<option value="0">Maak Uw keuze</option>
<option value="1">Aardbeien</option>
<option value="2">Banaan</option>
</select>


of dit:

<select name="myselect">
<option value="null">Maak Uw keuze</option>
<option value="strawberry">Aardbeien</option>
<option value="banana">Banaan</option>
</select>



Thomas van den Heuvel op 09/11/2015 11:18:42

Of gewoon value="".


Whatever.
Thomas van den Heuvel op 09/11/2015 11:18:42

Of gewoon value="".


Ik zou voor -1 gaan, al is het maar omdat je dan ook -2 kunt gebruiken voor "geen voorkeur".
Het is sowieso prettig om in je input validatie te kunnen herkennen dat er daadwerkelijk is gekozen voor "maak een keuze" en dat de waarde niet verloren is gegaan in een bug die kijkt naar de verkeerde variabele, of via een stuk javascript dat besloten heeft om lege values niet te submitten.

Reageren