Attributen
Dit element bevat de globale attributen.
| Een string die een hint geeft voor de automatisch-aanvullen-functie van een user agent. Zie The HTML autocomplete attribute voor een volledige lijst met waarden en details over het gebruik van autocomplete. | |
Dit Booleaanse attribuut geeft aan dat een formulierbesturingselement invoerfocus moet krijgen wanneer de pagina wordt geladen. Slechts één formulierelement in een document mag het autofocus-attribuut hebben. | |
Dit Booleaanse attribuut geeft aan dat de gebruiker niet met het besturingselement kan interageren. Als dit attribuut niet is opgegeven, erft het besturingselement zijn instelling van het omvattende element, bijvoorbeeld <fieldset>; als er geen omvattend element met het disabled-attribuut ingesteld is, dan is het besturingselement ingeschakeld. | |
|
Het Met dit attribuut kun je | |
Dit Booleaanse attribuut geeft aan dat nul of meer opties in de lijst kunnen worden geselecteerd. Indien niet opgegeven, kan slechts één optie tegelijk worden geselecteerd. Meerdere geselecteerde opties worden verzonden volgens de URLSearchParams-arrayconventie, d.w.z. name=value1&name=value2. Als multiple is opgegeven, is de standaardwaarde van size 4 in plaats van 1. | |
| Dit attribuut wordt gebruikt om de naam van het besturingselement op te geven. | |
|
Dit Booleaanse attribuut geeft aan dat de gebruiker minstens één optie moet selecteren voordat het formulier kan worden verzonden. De De placeholder-labeloptie is de tekst die wordt getoond in het vak voordat de gebruiker een keuze maakt, zoals de "--Please choose an option--" in de demo Try it hierboven. Semantisch gezien wordt deze gelijkgesteld aan het | |
Dit attribuut geeft het aantal opties aan dat tegelijk wordt getoond, en moet een positief geheel getal zijn. Als de waarde 1 is, geven browsers een dropdown-lijst weer. Als de waarde groter is dan 1, geven browsers een scrollende lijstweergave weer met het opgegeven aantal zichtbare rijen. Als het attribuut niet is opgegeven, is de standaardwaarde 1. Als het multiple-attribuut is opgegeven, is de standaardwaarde 4. Vanwege achterwaartse compatibiliteit geeft de size-eigenschap echter altijd 0 terug als standaardwaarde. |
Gebruiksnotities
Zoals bij andere formulierbesturingselementen is een <select>-element doorgaans geassocieerd met een <label> om toegankelijkheidsredenen, evenals een name-attribuut om de naam van het bijbehorende datapunt weer te geven dat naar de server wordt verzonden. Elke menuoptie wordt gedefinieerd door een <option>-element dat genest is binnen de <select>.
Elk <option>-element moet een value-attribuut hebben dat de datawaarde bevat die naar de server verzonden wordt wanneer die optie is geselecteerd. Als er geen value-attribuut is opgenomen, is de standaardwaarde de tekst die binnen het element staat. Je kunt een selected-attribuut opnemen op een <option>-element om deze standaard te selecteren wanneer de pagina voor het eerst wordt geladen. Als er geen selected-attribuut is opgegeven, wordt het eerste <option>-element standaard geselecteerd.
Een <select>-element wordt in JavaScript vertegenwoordigd door een HTMLSelectElement-object, en dit object heeft een value-eigenschap die de waarde van de geselecteerde <option> bevat.
Je kunt <option>-elementen verder nesten binnen <optgroup>-elementen om afzonderlijke groepen opties binnen de dropdown te maken. Je kunt ook <hr>-elementen opnemen om scheidingstekens te maken die visuele onderbrekingen tussen opties toevoegen.
Zie voor meer voorbeelden The native form widgets: Drop-down content.
Opties binnen wrapper-elementen
Het <select>-element bouwt zijn lijst met opties op uit alle <option>-afstammelingen, niet alleen zijn directe kinderen.
Dit betekent dat opties kunnen worden verpakt in andere elementen, zoals <div>-elementen, en dat ze nog steeds als selecteerbare opties in de dropdown verschijnen en worden meegenomen bij het verzenden van het formulier.
Wrapper-elementen zijn nuttig voor styling in customizable select elements, maar hebben geen effect op het gedrag van de select: ze maken geen groepen, labels of scheidingstekens.
Gebruik een <optgroup> om opties onder een kop te groeperen; een <option> telt als deel van een <optgroup> als de groep een voorouder is, dus wrapper-elementen kunnen ook binnen een groep worden gebruikt zonder de associatie te verbreken.
Browsers met modern parseergedrag behouden alle elementen die binnen een <select> zijn geschreven in de DOM — inclusief wrapper-elementen, <button> en <selectedcontent>.
Oudere browsers verwijderen in plaats daarvan niet-toegestane elementen tijdens het parseren, waarbij alleen de structuur van <option>, <optgroup> en <hr> behouden blijft.
Als gevolg daarvan werkt styling, opmaak of scripting die afhankelijk is van de verwijderde elementen niet op oudere browsers.
Meerdere opties selecteren
Op een desktopcomputer zijn er verschillende manieren om meerdere opties te selecteren in een <select>-element met een multiple-attribuut en een size-attribuut groter dan 1.
Muisgebruikers kunnen de toets Ctrl, Command of Shift ingedrukt houden (afhankelijk van wat logisch is voor het besturingssysteem) en vervolgens op meerdere opties klikken om ze te selecteren/deselecteren.
Het mechanisme voor het via het toetsenbord selecteren van meerdere niet-aaneengesloten items dat hieronder wordt beschreven, lijkt momenteel alleen in Firefox te werken.
Op macOS conflicteren de sneltoetsen Ctrl + Up en Ctrl + Down met de standaardsneltoetsen van het besturingssysteem voor Mission Control en Application windows, dus je moet deze uitschakelen voordat het werkt.
Toetsenbordgebruikers kunnen meerdere aaneengesloten items selecteren door:
- Focus te geven aan het
<select>-element (bijvoorbeeld met Tab). - Een item te selecteren bovenaan of onderaan het bereik dat ze willen selecteren, met behulp van de cursortoetsen Up en Down om door de opties heen te gaan.
- De toets Shift ingedrukt te houden en vervolgens de cursortoetsen Up en Down te gebruiken om het bereik van geselecteerde items te vergroten of te verkleinen.
Toetsenbordgebruikers kunnen meerdere niet-aaneengesloten items selecteren door:
- Focus te geven aan het
<select>-element (bijvoorbeeld met Tab). - De toets Ctrl ingedrukt te houden en vervolgens de cursortoetsen Up en Down te gebruiken om de "gefocuste" selectoptie te wijzigen, d.w.z. degene die geselecteerd wordt als ze daarvoor kiezen. De "gefocuste" selectoptie wordt gemarkeerd met een gestippelde omlijning, op dezelfde manier als een via het toetsenbord gefocuste link.
- Op Space te drukken om "gefocuste" selectopties te selecteren/deselecteren.
Styling met CSS
Het <select>-element was historisch gezien lastig om effectief te stylen met CSS.
De volgende handleidingen bevatten informatie over functies die volledig aanpasbare select-elementen mogelijk maken:
Legacy select-styling
In browsers die de moderne aanpassingsfuncties niet ondersteunen (of in legacy codebases waar ze niet kunnen worden gebruikt), ben je beperkt tot het manipuleren van het boxmodel, het weergegeven lettertype, enz. Je kunt ook de appearance-eigenschap gebruiken om de standaard systeem-appearance te verwijderen.
Het is echter lastig om een consistent resultaat te krijgen tussen browsers met traditionele <select>-elementen. Als je volledige controle wilt, kun je overwegen een library te gebruiken met goede voorzieningen voor het stylen van formulierwidgets, of je eigen dropdownmenu te bouwen met behulp van niet-semantische elementen, JavaScript en WAI-ARIA om semantiek te bieden.
Je kunt de pseudoklasse :open gebruiken om <select>-elementen te stylen in de geopende toestand, dat wil zeggen wanneer de lijst met dropdown-opties wordt weergegeven. Dit is niet van toepassing op meerregelige <select>-elementen (die met het multiple-attribuut ingesteld) — deze worden doorgaans weergegeven als een scrollende lijstweergave in plaats van een dropdown, en hebben dus geen geopende toestand.
Zie voor meer informatie over legacy <select>-styling:
- De
field-sizing-eigenschap, die bepaalt hoe<select>-elementen worden geformatteerd in verhouding tot hun bevatte opties.
Toegankelijkheid
De <hr> binnen een <select> moet als puur decoratief worden beschouwd, omdat deze momenteel niet wordt blootgesteld in de toegankelijkheidsboom en daardoor niet aan hulptechnologieën wordt blootgesteld.
Voorbeelden
Eenvoudige select
Het volgende voorbeeld maakt een dropdownmenu met drie waarden. De tweede optie bevat het selected-attribuut, waardoor die optie standaard geselecteerd is.
<select name="choice">
<option value="first">First Value</option>
<option value="second" selected>Second Value</option>
<option value="third">Third Value</option>
</select>Resultaat
Select met gegroepeerde opties
Het volgende voorbeeld maakt een dropdownmenu met groepering met behulp van <optgroup> en <hr> om het voor de gebruiker gemakkelijker te maken de inhoud van de dropdown te begrijpen.
<label for="hr-select">Your favorite food</label> <br />
<select name="foods" id="hr-select">
<option value="">Choose a food</option>
<hr />
<optgroup label="Fruit">
<option value="apple">Apples</option>
<option value="banana">Bananas</option>
<option value="cherry">Cherries</option>
<option value="damson">Damsons</option>
</optgroup>
<hr />
<optgroup label="Vegetables">
<option value="artichoke">Artichokes</option>
<option value="broccoli">Broccoli</option>
<option value="cabbage">Cabbages</option>
</optgroup>
<hr />
<optgroup label="Meat">
<option value="beef">Beef</option>
<option value="chicken">Chicken</option>
<option value="pork">Pork</option>
</optgroup>
<hr />
<optgroup label="Fish">
<option value="cod">Cod</option>
<option value="haddock">Haddock</option>
<option value="salmon">Salmon</option>
<option value="turbot">Turbot</option>
</optgroup>
</select>Resultaat
Geavanceerde select met meerdere functies
Het volgende voorbeeld is complexer en toont meer functies die je kunt gebruiken op een <select>-element:
- Het
multiple-attribuut maakt het mogelijk om meer dan één optie te selecteren. - Het
size-attribuut is ingesteld op4, wat betekent dat er 4 regels tegelijk worden weergegeven. Gebruikers kunnen scrollen om alle opties te bekijken. - Er zijn twee
<optgroup>-elementen opgenomen, die twee visuele groeperingen creëren, waarbij de groepsnaam meestal vetgedrukt is en geneste opties worden ingesprongen. - Het
disabled-attribuut is toegevoegd aan de optie "Hamster", waardoor die optie niet selecteerbaar is.
<label>
Please choose one or more pets:
<select name="pets" multiple size="4">
<optgroup label="4-legged pets">
<option value="dog">Dog</option>
<option value="cat">Cat</option>
<option value="hamster" disabled>Hamster</option>
</optgroup>
<optgroup label="Flying pets">
<option value="parrot">Parrot</option>
<option value="macaw">Macaw</option>
<option value="albatross">Albatross</option>
</optgroup>
</select>
</label>Resultaat
Technische samenvatting
| Inhoudscategorieën | Flow-inhoud, phrasing-inhoud, interactieve inhoud, listed, labelable, resettable, en submittable form-associated element |
|---|---|
| Toegestane inhoud |
|
| Weglaten van tags | Geen, zowel de begin- als de eindtag zijn verplicht. |
| Toegestane ouders | Elk element dat phrasing-inhoud accepteert. |
| Impliciete ARIA-rol |
combobox met geen
multiple-attribuut en geen
size-attribuut groter dan 1, anders
listbox.
|
| Toegestane ARIA-rollen |
menu met geen
multiple-attribuut en geen
size-attribuut groter dan 1, anders is combobox
toegestaan maar niet aanbevolen.
|
| DOM-interface | HTMLSelectElement |