Select

Release dato: 19.09.2023

Sist oppdatert: 07.07.2025

Select (nedtrekksliste) lar brukeren velge ett enkelt alternativ fra en liste. Den brukes når du har mange valg, men ikke plass eller behov for å vise alle samtidig.

Formålet med komponenten er å gjøre det enkelt å velge riktig alternativ uten at det tar unødvendig plass i et skjema eller løsning.

Live demo

Relaterte komponenter

Varianter

Innhold

TypeBeskrivelse
StandardLabel, placeholder og valgliste
Med hjelpetekstKort hjelpetekst under feltet
Med ekspanderende hjelpetekstHjelpetekst bak “Les mer”-knapp
Valgfritt-tag/obligatorisk tagViser enten “Valgfritt” eller “Må fylles ut” ved siden av label

Select brukes vanligvis sammen med input wrapper, under dokumentasjonen til denne finner du mer om hvordan du skriver gode labels og hjelpetekster, og om funksjonene i input wrapper.

States

Text input har seks ulike states som gir brukeren visuell tilbakemelding i ulike situasjoner:

TypeBeskrivelse
DefaultFeltet vises i normal tilstand, klar til bruk
HoverNår brukeren beveger musepekeren over feltet
FocusNår brukeren har markert feltet og er klar til å skrive
ActiveNår brukeren skriver i feltet
ErrorNår feltet har en feil, og en forklarende feilmelding vises
DisabledNår feltet ikke er tilgjengelig for interaksjon

Retningslinjer for bruk

Bruk select når

  • du skal presentere mange alternativ der bare ett kan velges
  • du ønsker å unngå at lange lister med alternativer blir overveldende
  • du trenger å få plass til flere alternativer på liten plass

Unngå select når

  • du har få valg og god plass (bruk heller radio button)
  • brukeren kan velge mer enn ett alternativ (bruk heller checkbox)
  • du har strukturerte alternativer med nok plass er det bedre å liste ut alle valgene

Antall og tilgjengelighet

Select fungerer best når du har mange alternativer, men bare ett skal velges. Har du færre enn fem valg, er radioknapper ofte bedre fordi valgene blir mer synlige og enklere å sammenligne.

Lange lister kan være utfordrende for brukere med skjermleser, og det finnes kjente tilgjengelighetsproblemer med select-komponenten (les mer under “Research about this component” på gov.uk).

Vurder om du kan forenkle spørsmålet slik at det blir færre alternativer. Hvis det gir mening, bruk radio button for å gi en bedre opplevelse.

Gjør slik

Gjør slik – bruk select når du har mange alternativer
Bruk select når du har mange alternativer

Unngå

Unngå – select ved få alternativer
Unngå select ved få alternativer

Sortering av alternativer

Det er viktig å liste ut elementene dine på en oversiktlig måte, om det så er alfabetisk, tidsbasert eller en annen logisk rekkefølge.

Gjør slik

Gjør slik – sorter i logisk rekkefølge
Sorter alternativene i en logisk rekkefølge

Unngå

Unngå – ulogisk rekkefølge og inkonsekvente navn
Unngå å liste alternativer i ulogisk rekkefølge og å bruke forskjellige måter å skrive alternativene

Bruk select til riktig formål

Select passer best til ryddige, relaterte lister. Ikke bruk den til å velge innhold som egentlig krever et annet format, som adresse eller telefonnummer.

Gjør slik

Gjør slik – relaterte lister
Bruk select til lister med relatert innhold

Unngå

Unngå – postnummer og tall som krever annet format
Unngå select for innhold som bør velges på en annen måte

Label, hjelpetekst og plassholder

En label skal være kort og presis, helst mellom ett og tre ord. Unngå kolon på slutten og bruk verken kun store eller kun små bokstaver.

Plassholder skal aldri være eneste instruksjon. Den forsvinner når brukeren gjør et valg, og er ikke alltid tilgjengelig for skjermlesere. Bruk heller label og/eller hjelpetekst for å gi nødvendig veiledning.

Les mer om innhold i skjemaelementer i input wrapper-dokumentasjonen og om god praksis for skjemaer.

Responsivitet

Select tilpasser seg automatisk tilgjengelig plass og bryter linjer der det er nødvendig. Test alltid på ulike skjermstørrelser og zoom-nivåer at det fortsatt er enkelt å navigere med tastatur og skjermleser.

Universell utforming

  • Alle felt skal ha en tilknyttet label, også hvis den skjules visuelt (pkt-sr-only).
  • Feilmeldinger skal være kodet som tekst og knyttet til det spesifikke feltet.
  • Select kan være utfordrende for skjermlesere ved veldig lange lister, vurder alternativer som radio button eller comboboxcombobox om det gir bedre opplevelse.

Anatomi

ElementBeskrivelse
Label (etikett)Kort og tydelig ledetekst som beskriver hva brukeren skal velge
Valgfritt-/obligatoriskMerker feltet som valgfritt eller obligatorisk
HjelpetekstKort forklaring under label som hjelper brukeren å forstå hvordan de skal fylle ut feltet
Ekspanderende hjelpetekst“Les mer”-knapp som viser mer utfyllende informasjon når brukeren trenger ekstra forklaring
InputfeltSelve nedtrekkslisten der brukeren velger et alternativ
PlassholdertekstMidlertidig tekst i feltet som indikerer at brukeren må gjøre et valg, skal ikke erstatte label

Implementasjon i kode

Hvordan ta komponenten i bruk?

Testing

Elements: Dersom du skal skrive tester med JSDOM eller liknende er det viktig at du lar komponenten bli rendret ferdig før du tester den. Dette kan gjøres ved å kjøre denne kodelinjen før testene kjøres:

await window.customElements.whenDefined("pkt-select");

Props and tokens

PropTypeBeskrivelse
labelstringTekst som vises over feltet
requiredTagbooleanViser en merking som indikerer at feltet er påkrevd
requiredTextstringTekst som vises i påkrevd-merkingen
optionalTagbooleanViser en merking som indikerer at feltet er valgfritt
optionalTextstringTekst som vises i valgfritt-merkingen
tagTextstringTekst som vises i en tag ved siden av label
hasErrorbooleanAngir om feltet har feil
errorMessagestringFeilmelding som vises under feltet
helptextstringHjelpetekst som vises over feltet
helptextDropdownstringHjelpetekst som vises i en lukket boks man kan åpne
helptextDropdownButtonstringTekst som vises på knappen for å åpne/lukke utvidet hjelpetekst
namestringNavn på feltet
idstringId på feltet
valuestringVerdi på feltet
disabledbooleanAngir om feltet er disabled
inlinebooleanAngir om feltet skal vises i en linje
fullwidthbooleanAngir om feltet skal ta full bredde
ariaDescribedBystringSpesifiserer ID-en til elementet som beskriver feltet
ariaLabelledbystringSpesifiserer ID-en til elementet som navigerer til feltet
Slot (children)Beskrivelse
defaultOption elements for select component

Farger

ElementCSS variabel
Border
Text