Textarea

Release dato: 11.09.2023

Sist oppdatert: 07.07.2025

Textarea (fritekstfelt) er et skjemaelement som lar brukeren skrive tekst over flere linjer. Bruk det når du forventer at brukeren skal skrive inn lengre tekst, som fritekstsvar eller beskrivelser.

For korte svar anbefaler vi text input.

Live demo

Relaterte komponenter

Varianter

VariantBeskrivelse
DefaultEnkelt felt for lengre tekst
Med tellerNår du har en maksgrense på antall tegn

States

StateBeskrivelse
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 textarea når

  • brukeren skal skrive lengre fritekstsvar
  • svaret ikke har en fast struktur

Unngå textarea når

Plassholder

Du kan legge til plassholdertekst, men ikke bruk den som eneste instruksjon. Plassholderen forsvinner når brukeren skriver, og er ikke alltid tilgjengelig for skjermlesere.

Gjør slik

Gjør slik – eksempel med tydelig etikett og hjelpetekst
Bruk label for å forklare feltet, og bruk plassholder kun som støtte

Unngå

Unngå – eksempel hvor plassholder brukes som eneste instruksjon
Unngå bruk av plassholder som eneste instruksjon

Størrelse

Textarea skal ha en høyde som står i forhold til hvor mye tekst du forventer at brukeren skriver. For små felt gjør det vanskelig å lese og redigere lengre svar.

Gjør slik

Gjør slik – hensiktsmessig høyde for lengre svar
Tilpass høyden på textarea etter mengden tekst du forventer

Unngå

Unngå – for liten høyde som gjør lesing/redigering vanskelig
Unngå å gjøre feltet for lite, da blir det vanskelig å lese og redigere tekst

Teller (counter)

Hvis du har en tegnbegrensning, kan du legge til en teller. Den hjelper brukeren med å holde seg innenfor grensen uten å stoppe skrivingen.

Brukeren må få lov til å fullføre tanken sin selv om grensen overskrides. Derfor skal feltet kunne inneholde mer tekst enn maksgrensen, men samtidig vise at grensen er passert (content overflow).

Responsivitet

Textarea tilpasser seg bredden på skjermen og bryter linjer automatisk. Test på mobil, nettbrett og desktop for å sikre at feltet er lett å bruke og lese overalt.

Universell utforming

Ledetekst og instruksjon

Alle skjemaelementer må ha en label eller instruksjon som forklarer hvordan feltet skal fylles ut, inkludert om det er obligatorisk eller valgfritt. Labelen må være koblet til feltet i koden slik at skjermlesere kan lese opp riktig informasjon. I mer komplekse skjemaer kan du trenge ekstra forklaring gjennom hjelpetekst eller ekspanderende hjelpetekst.

Feilmeldinger

Feilmeldinger må være tilgjengelige både for skjermlesere og for de som navigerer med tastatur. Det skal være enkelt å identifisere hvilket felt feilen gjelder, og meldingen bør beskrive både hva som er galt og hvordan brukeren kan rette opp.

Spesielt for textarea

  • Feltet må kunne ekspanderes slik at lange svar blir håndterbar
  • Telleren må ikke blokkere innskriving, men tydelig vise når maksgrensen er passert (content overflow)
  • Test at feltet fungerer godt med zoom og på små skjermer

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 tekstfeltet der brukeren skriver inn
PlassholdertekstMidlertidig tekst i feltet som indikerer at brukeren må gjøre et valg, skal ikke erstatte label
TellerViser hvor mange tegn brukeren har skrevet, og maksgrensen (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-textarea");

Props og tokens

PropTypeBeskrivelse
labelstringTekst som vises over feltet
namestringNavn som sendes brukes i skjema ved innsending
placeholderstringSpesifiserer en kort hint som beskriver forventet verdi av 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
rowsnumberSpesifiserer antall synlige rader i feltet.
valuestringSpesifiserer den nåværende verdien av feltet.
autocompletestringSpesifiserer hvordan type `autocomplete` feltet har. Standard er 'off'.
ariaLabelledbystringSpesifiserer ID-en til elementet som beskriver feltet.
requiredbooleanEr feltet påkrevd?
requiredTagbooleanIndikerer om feltet er påkrevd.
requiredTextstringTekst som vises i påkrevd-merkingen
optionalTagbooleanIndikerer om feltet er valgfritt.
optionalTextstringTekst som vises i valgfritt-merkingen
tagTextstringTekst som vises i en tag ved siden av label
hasErrorbooleanIndikerer om feltet har en feil.
errorMessagestringTekst som vises under datovelgeren ved feiltilstand
disabledbooleanIndikerer om feltet er deaktivert.
inlinebooleanIndikerer om feltet skal vises inline.
fullwidthbooleanIndikerer om feltet skal ta opp full bredde.
useWrapperbooleanIndikerer at feltet skal ha synlig label og hjelpetekst
idstringSpesifiserer den unike identifikatoren for feltet.
counterbooleanIndikerer om en teller skal vises.
counterMaxLengthnumberSpesifiserer maksimal lengde for telleren.

Farger

ElementCSS variabel
Border
Text