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.
Test komponenten
Relaterte komponenter
Bruk nÄr du forventer korte svar (én linje)
Bruk nÄr brukeren skal kunne velge fra en liste med alternativer
Bruk nÄr formÄlet er Ä sÞke, ikke Ä skrive inn en lengre tekst
Varianter
Variant | Beskrivelse |
---|---|
Default | Enkelt felt for lengre tekst |
Med teller | NÄr du har en maksgrense pÄ antall tegn |
States
State | Beskrivelse |
---|---|
Default | Feltet vises i normal tilstand, klar til bruk |
Hover | NÄr brukeren beveger musepekeren over feltet |
Focus | NÄr brukeren har markert feltet og er klar til Ä skrive |
Active | NÄr brukeren skriver i feltet |
Error | NÄr feltet har en feil, og en forklarende feilmelding vises |
Disabled | NÄ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
- du forventer korte svar (bruk text input)
- du bare trenger valg eller avkryssing (bruk checkbox, radio button eller select)
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
UnngÄ
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
UnngÄ
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
Element | Beskrivelse |
---|---|
Label (etikett) | Kort og tydelig ledetekst som beskriver hva brukeren skal velge |
Valgfritt-/obligatorisk | Merker feltet som valgfritt eller obligatorisk |
Hjelpetekst | Kort 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 |
Inputfelt | Selve tekstfeltet der brukeren skriver inn |
Plassholdertekst | Midlertidig tekst i feltet som indikerer at brukeren mÄ gjÞre et valg, skal ikke erstatte label |
Teller | Viser hvor mange tegn brukeren har skrevet, og maksgrensen (valgfritt) |
Implementasjon i kode
Hvordan ta komponenten i bruk?
import @oslokommune/punkt-elements/dist/pkt-textarea.js;
import { PktTextarea } from '@oslokommune/punkt-react';
<script src="https://punkt-cdn.oslo.kommune.no/latest/elements/pkt-textarea.js" type="module"></script>
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
Prop | Type | Beskrivelse |
---|---|---|
label | string | Tekst som vises over feltet |
name | string | Navn som sendes brukes i skjema ved innsending |
placeholder | string | Spesifiserer en kort hint som beskriver forventet verdi av feltet. |
helptext | string | Hjelpetekst som vises over feltet |
helptextDropdown | string | Hjelpetekst som vises i en lukket boks man kan Äpne |
helptextDropdownButton | string | Tekst som vises pÄ knappen for Ä Äpne/lukke utvidet hjelpetekst |
rows | number | Spesifiserer antall synlige rader i feltet. |
value | string | Spesifiserer den nÄvÊrende verdien av feltet. |
autocomplete | string | Spesifiserer hvordan type `autocomplete` feltet har. Standard er 'off'. |
ariaLabelledby | string | Spesifiserer ID-en til elementet som beskriver feltet. |
required | boolean | Er feltet pÄkrevd? |
requiredTag | boolean | Indikerer om feltet er pÄkrevd. |
requiredText | string | Tekst som vises i pÄkrevd-merkingen |
optionalTag | boolean | Indikerer om feltet er valgfritt. |
optionalText | string | Tekst som vises i valgfritt-merkingen |
tagText | string | Tekst som vises i en tag ved siden av label |
hasError | boolean | Indikerer om feltet har en feil. |
errorMessage | string | Tekst som vises under datovelgeren ved feiltilstand |
disabled | boolean | Indikerer om feltet er deaktivert. |
inline | boolean | Indikerer om feltet skal vises inline. |
fullwidth | boolean | Indikerer om feltet skal ta opp full bredde. |
useWrapper | boolean | Indikerer at feltet skal ha synlig label og hjelpetekst |
id | string | Spesifiserer den unike identifikatoren for feltet. |
counter | boolean | Indikerer om en teller skal vises. |
counterMaxLength | number | Spesifiserer maksimal lengde for telleren. |