Checkbox

Release dato: 04.10.2023

Sist oppdatert: 07.07.2025

Checkbox brukes for Ă„ gi brukeren mulighet til Ă„ krysse av ett eller flere alternativer i en gruppe med valg. Du kan ogsĂ„ bruke en enkeltstĂ„ende checkbox for Ă„ be om bekreftelse, for eksempel “Jeg godtar vilkĂ„rene” fĂžr innsending av et skjema.

Test komponenten

Relaterte komponenter

Varianter

VariantBruk
StandardNÄr checkbox stÄr alene eller i en enkel liste
Tile (med ramme)NÄr du vil gruppere flere checkboxer visuelt. Gir tydelig avgrensning og mer luft
VariantBruk
EnkeltstÄendeNÄr checkbox stÄr alene eller i en enkel liste
GruppeGruppér checkboxene nÄr du tilbyr flere valg innenfor samme gruppe eller kategori
EnkeltstÄende checkbox
En gruppe med checkboxer

Retningslinjer for bruk

Bruk checkbox nÄr

  • man har en gruppe med valg innenfor samme kontekst
  • valgene ikke utelukker hverandre
  • brukeren skal kunne velge ett eller flere alternativer
  • en bruker skal ha muligheten til Ă„ skru et alternativ pĂ„/av (for eksempel “akseptere vilkĂ„r” for en tjeneste, eller lignende funksjonalitet)

UnngÄ checkbox nÄr

  • brukeren kun kan velge ett alternativ (bruk radiobutton i stedet)
  • det er fĂ„ alternativer (vurder heller switch eller radiobutton)
  • det er mer enn 10 alternativer Ă„ velge mellom (vurder Ă„ bruke select)
  • det er en binĂŠr innstilling som kan beskrives som pĂ„/av (bruk switch)

Skriv tydelige etiketter

Sþrg for at hver checkbox har en klar og konkret etikett. Etiketten skal beskrive hva valget innebérer, ikke bare “Ja” eller “Nei”.

GjĂžr slik

Eksempel pÄ klar og konkret etikett
Skriv klar og konkret etikett

UnngÄ

Eksempel pÄ ufullstendig og uklart innhold..
UnngÄ ufullstendig og uklart innhold

Forskjellen pÄ radiobutton og checkbox

Ikke bruk checkboxer dersom brukeren kun kan velge ett valg (gÄ heller for radiobuttons)

GjĂžr slik

Eksempel pÄ riktig bruk av radiobuttons
Bruk radiobuttons dersom det ene valget utelukker det andre

UnngÄ

Eksempel pÄ riktig bruk av radiobuttons
UnngÄ checkboxer nÄr brukeren ikke skal ha muligheten til Ä velge flere valg

Opt in, ikke opt out

Checkbox skal alltid brukes som opt-in. Brukeren mÄ selv aktivt krysse av for Ä gi samtykke (opt in), ikke mÄtte melde seg av (opt out).

Du skal aldri forhÄndsvelge en checkbox for samtykke, for eksempel til Ä motta nyhetsbrev eller godta vilkÄr. Dette er et krav i GDPR.

GjĂžr slik

Eksempel pÄ checkbox som brukes som opt-in
Checkbox skal alltid brukes som opt-in

UnngÄ

Eksempel pÄ checkbox hvor brukeren selv mÄ melde seg av.
UnngÄ at brukeren selv mÄ melde seg av

Plassering av checkbox

Plasser checkboxene vertikalt nÄr det er mulig. Det gjÞr det enklere for brukeren Ä se hvilket valg som hÞrer til hvilken tekst.

Horisontal plassering bĂžr bare brukes hvis det er to til tre valg, og hvis det gir en mer kompakt lĂžsning.

Har du lange etiketter som kan gÄ over flere linjer, skal checkboxene alltid plasseres vertikalt for best lesbarhet.

Hvis du har mange valg, bÞr du liste dem i én kolonne. Da blir det lettere for brukeren Ä skanne valgene.

Responsivitet

PĂ„ mobil skal alltid checkboxer ligge vertikalt for optimal lesbarhet.

Husk Ă„ teste:

  • at teksten brytes riktig pĂ„ smĂ„ skjermer
  • at grupperte checkboxer (tile) fortsatt er oversiktlige
  • at fokusring og klikkeflater fungerer godt pĂ„ touch

Universell utforming

Skriv en klar, kortfattet og unik label

Alle checkboxer krever en klar, kortfattet og unik label (etikett). For checkboxer uten label, for eksempel de som brukes i en tabell, kreves det fortsatt en skjult etikett for skjermlesere og andre hjelpeteknologier. WCAG 2.1: 1.3.1 Info and Relationships, 2.4.6 Headings and Labels.

UnngÄ standardvalg

ForhÄndsvalgte valg anses som en villedende praksis for alle brukere. Implementer en standard uvalgt tilstand.

UnngÄ deaktiverte (disabled) checkboxer

Vi anbefaler Ä unngÄ disabled pÄ skjemaelementer som radio, checkbox og tekstfelt, fordi det kan skape problemer for tilgjengelighet.

Brukere forstÄr ofte ikke hvorfor et element er deaktivert. Derfor anbefaler vi Ä heller vise en feilmelding eller en hjelpetekst, enn Ä bruke disabled. Hvis du mÄ deaktivere en checkbox, mÄ det vÊre tydelig hvorfor, og hva som mÄ til for Ä aktivere den igjen.

Tastaturinteraksjoner

Alle tastaturinteraksjoner og ARIA-etiketter mÄ oppfylle tilgjengelighetskriterier.

Bruk fieldset og legend

Bruk fieldset og legend (som inputwrapper tilbyr) ved grupper av avmerkingsbokser.

Les mer om universell utforming av checkbox:

Anatomi

ElementBeskrivelse
1. CheckboxSelve checkboxen
2. LabelTekst som beskriver valget
3. HjelpetekstForklaring til valget (valgfritt)

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-checkbox");

Om dere bruker data-testid for Ä hente ut elementer i testene, vil attributten videresendes til selve skjemaelementet. Dersom dere heller Þnsker Ä bruke data-testid pÄ elementet <pkt-checkbox>, mÄ dere sette attributten skipForwardTestid pÄ elementet.

Dersom dere skal teste tilstanden pÄ checked bÞr dere teste pÄ den visuelle tilstanden med en query mot :checked istedenfor Ä teste property .checked. Grunnen til dette har vi ikke helt klart Ä komme til bunns i, da det fungerer helt fint med riktig property i nettleseren. Det kan tenkes at dette kan lÞses ved Ä vente et Þyeblikk, om det er helt nÞdvendig Ä teste property istedenfor synlig tilstand.

I punkt-testing-utils har vi skrevet testen slik: element.querySelectorAll(':checked').length.

Props og tokens

PropTypeBeskrivelse
labelstringTekst (label)
checkHelptextstringHjelpetekst
namestringNavn for innsending
valuestringVerdi
idstringID
defaultCheckedbooleanForhÄndsvalgt
checkedbooleanHuket av
hasTilebooleanBoks (tile)
disabledbooleanDeaktivert
hasErrorbooleanFeil
isSwitchbooleanSwitch
labelPositionright
left
Posisjon
hideLabelbooleanSkjul tekst/label
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
EventBeskrivelse
changeReturnerer checkboxens verdi nÄr den endres