Text input

Release dato: 14.08.2023

Sist oppdatert: 07.07.2025

Et text input (tekstfelt, inputfelt) lar brukeren skrive fritekst, oftest i skjemaer, men ogsÄ i andre deler av en tjeneste. Bruk tekstfelt til korte verdier som fÄr plass pÄ én linje, for eksempel navn, e-post, telefonnummer, fÞdselsnummer eller belÞp.

MÄlet er at brukeren raskt forstÄr hva som skal fylles inn, og fÄr tydelig tilbakemelding hvis noe er feil.

Test komponenten

Relaterte komponenter

Varianter

Text input 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.

Type Beskrivelse
Standard Label, placeholder og tekstfelt
Med hjelpetekst Kort hjelpetekst under label
Med ekspanderende hjelpetekst Hjelpetekst bak “Les mer”-knapp
Valgfritt-tag/obligatorisk tag Viser enten “Valgfritt” eller “MĂ„ fylles ut” ved siden av label

Text input 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.

Enkel textinputETextinput med hjelpetekstTextinput med ekspanderende hjelpetekstTextinput med valgfritt-tag

States

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

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
Default state textinputHover state textinputFocus state textinputActive state textinputError state textinputDisabled state textinput

StĂžrrelser

Text input kan brukes i tre ulike stĂžrrelser:

StĂžrrelser Bruk
Medium (default) Standard, og skal brukes som hovedregel
Small For trange flater, som tabeller og kompakte skjema
XSmall For ekstra trange flater, som kompakte tabeller og informasjonstette fagsystemer
Eksempel pÄ text input i forskjellige stÞrrelser

Retningslinjer for bruk

Bruk text input nÄr

  • brukeren skal skrive kort fritekst pĂ„ Ă©n linje, som navn, e-post, telefonnummer eller belĂžp
  • verdien er unik og ikke kan velges fra en liste

UnngÄ text input nÄr

  • brukeren skal velge mellom forhĂ„ndsdefinerte alternativer (bruk heller select, radio button eller checkbox)
  • innholdet er lengre fritekst, som avsnitt eller flere setninger (bruk heller textarea)

Labels/etikett

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

GjĂžr slik

Skriv tydelig og konsise labels

UnngÄ

UnngÄ unÞdvendig innhold og kolon pÄ slutten av label

Plassholder

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.

GjĂžr slik

Gjþr slik – bruk label over text input
Bruk label over text input

UnngÄ

UnngĂ„ – placeholdertekst som eneste ledetekst
UnngÄ Ä bruke plassholdertekst som eneste ledetekst

Bredde

Bredden pÄ feltet bÞr passe til innholdet du forventer at brukeren fyller inn. Et telefonnummerfelt bÞr for eksempel ikke vÊre bredere enn antallet tegn som skal skrives inn. Ulik bredde pÄ feltene gjÞr det lettere Ä navigere i skjemaer med mange felt.

Text input er egnet til korte tekster og svar. Textarea er egnet til mer utfyllende og lengre svar.

GjĂžr slik

Bredden til inputfeltet bÞr gi brukeren en indikasjon pÄ hva som forventes at de fyller inn

UnngÄ

UnngÄ for brede eller for smale felt for forventet innhold

Valgfritt eller pÄkrevd

Velg én metode for Ä markere felter: enten viser du «Valgfritt» pÄ de Äpne feltene, eller «MÄ fylles ut» pÄ de obligatoriske. Bland aldri begge i samme lÞsning.

Textinput med valgfritt-tagTextinput med 'mÄ fylles ut'-tag

Prefiks og suffiks

Bruk prefiks nÄr faste tegn skal vises foran verdien, for eksempel landskode pÄ telefonnummer. Bruk suffiks nÄr du skal vise en enhet, et ikon eller tilby en handling som Ä tÞmme feltet eller vise/skjule passord.

Eksempeler pÄ prefiks og suffiks

Hjelpetekst og feilmeldinger

Hjelpetekst skal alltid bidra til Ă„ avklare, ikke gjenta. Den skal forklare hvordan brukeren skal fylle ut feltet, for eksempel hvilket format som gjelder, eller hvor de finner informasjonen.

Feilmeldinger skal vÊre konkrete og hjelpe brukeren videre. De bÞr forklare hva som er galt, og sÄ langt som mulig foreslÄ hvordan det kan rettes opp.

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

Responsivitet

Text input tilpasser seg tilgjengelig plass og bryter linjer ved behov.

Test at:

  • hjelpetekst og feilmeldinger holder seg nĂŠr feltet
  • prefiks/suffiks ikke skyver ut viktig innhold
  • klikkbare ikoner er store nok pĂ„ mobil
Textinput pÄ mobil

Universell utforming

Synlig eller skjult label

Alle felt skal ha en label. Den kan vÊre synlig, eller skjult med pkt-sr-only nÄr den ikke skal vises visuelt. Labelen mÄ vÊre koblet til feltet i koden, slik at skjermlesere leser opp riktig informasjon.

Hjelpetekst og feilmelding

Hjelpetekst og feilmeldinger skal knyttes til feltet med aria-describedby. PÄ den mÄten fÄr skjermlesere lest opp riktig kontekst. Feilmeldinger mÄ vÊre tekst, plassert rett under feltet, og forklare bÄde hva som er galt og hvordan det kan rettes. Ikke vis feilmeldinger fÞr brukeren faktisk har forsÞkt Ä fylle ut feltet.

Riktig type og autofyll

Bruk riktige type-verdier for Ä gi bedre tilgjengelighet og riktig tastatur pÄ mobil, for eksempel email, tel eller password. Angi autocomplete der det er nyttig, som name eller one-time-code.

Klikkbare prefiks og suffiks

Ikoner eller tekst som fungerer som handlinger (for eksempel “vis/skjul passord”) mĂ„ kunne fokuseres med tastatur og ha en tydelig beskrivelse for skjermlesere.

UnngÄ plassholder som instruksjon

Plassholdertekst forsvinner nÄr brukeren skriver, og er ofte utilgjengelig for skjermlesere. Viktig veiledning mÄ derfor alltid ligge i label eller hjelpetekst.

Inndata

For Ä sikre en god brukeropplevelse er det viktig Ä bruke en kombinasjon av riktig input-type og autocomplete-attributter. Les mer om autocomplete pÄ MDN Webdocs.

  • Tillat variasjoner i hvordan data skrives inn, sĂ„ lenge informasjonen er forstĂ„elig. For eksempel bĂžr telefonnumre kunne inneholde mellomrom, personnumre punktum, og e-postadresser aksepteres selv om de har et mellomrom til slutt
  • Velg inputtyper som samsvarer med informasjonen du ber om, for eksempel tel, search eller email. Dette gir mobilbrukere et tilpasset tastatur, men vĂŠr oppmerksom pĂ„ at enkelte inputtyper kan aktivere klientsidevalidering
  • autocomplete brukes i felter som mottar personlig informasjon. Hvis feltet skal be om personopplysninger om en annen person enn brukeren, mĂ„ du sette autocomplete="off"
  • Pass pĂ„ at brukerne ser inndata som formateres automatisk, men uten at det forstyrrer dem mens de fyller ut.

Mer om universell utforming av text input:

Anatomi

Element Beskrivelse
Label (etikett) Kort og tydelig ledetekst som beskriver hva brukeren skal skrive
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 inputfeltet der brukeren skriver inn
Plassholdertekst Midlertidig tekst i feltet som indikerer at brukeren mÄ gjÞre et valg, skal ikke erstatte label
Anatomi for Textinput

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

Egenskaper

PktTextinput

Props

Prop:
label?
Type:
string
Beskrivelse:
Tekst som vises over feltet
Prop:
name
Type:
string
Beskrivelse:
Navn som brukes i skjema ved innsending
Prop:
placeholder?
Type:
string
Beskrivelse:
Spesifiserer en kort hint som beskriver forventet verdi av feltet.
Prop:
helptext?
Type:
string
Beskrivelse:
Hjelpetekst som vises over feltet
Prop:
helptextDropdown?
Type:
string
Beskrivelse:
Hjelpetekst som vises i en lukket boks man kan Äpne
Prop:
helptextDropdownButton?
Type:
string
Standardverdi:
"Les mer"
Beskrivelse:
Tekst som vises pÄ knappen for Ä Äpne/lukke utvidet hjelpetekst
Prop:
size?
Type:
number
Beskrivelse:
Spesifiserer bredde pÄ feltet i antall tegn.
Prop:
type?
Type:
"color" | "date" | "datetime-local" | "email" | "file" | "month" | "number" | "password" | "search" | "tel" | "text" | "time" | "url" | "week"
Standardverdi:
"text"
Beskrivelse:
Spesifiserer typen av feltet. Standard er 'text'.
Prop:
omitSearchIcon?
Type:
boolean
Standardverdi:
false
Beskrivelse:
Indikerer om sĂžkeikonet skal utelates.
Prop:
value?
Type:
string
Beskrivelse:
Spesifiserer den nÄvÊrende verdien av feltet.
Prop:
autocomplete?
Type:
string
Standardverdi:
"off"
Beskrivelse:
Spesifiserer hvordan type autocomplete feltet har. Standard er 'off'.
Prop:
suffix?
Type:
string
Beskrivelse:
Spesifiserer et suffiks som vises etter feltet.
Prop:
prefix?
Type:
string
Beskrivelse:
Spesifiserer et prefiks som vises fĂžr feltet.
Prop:
iconNameRight?
Type:
icon
Beskrivelse:
Spesifiserer navnet pÄ ikonet som vises til hÞyre for feltet.
Prop:
ariaLabelledby?
Type:
string
Beskrivelse:
Spesifiserer ID-en til elementet som beskriver feltet.
Prop:
ariaDescribedby?
aria-describedby?
Type:
string
Beskrivelse:
Spesifiserer ID-en til elementet som beskriver feltet.
Prop:
required?
Type:
boolean
Standardverdi:
false
Beskrivelse:
Er feltet pÄkrevd?
Prop:
requiredTag?
Type:
boolean
Beskrivelse:
Indikerer om feltet er pÄkrevd.
Prop:
requiredText?
Type:
string
Standardverdi:
"MĂ„ fylles ut"
Beskrivelse:
Tekst som vises i pÄkrevd-merkingen
Prop:
optionalTag?
Type:
boolean
Beskrivelse:
Indikerer om feltet er valgfritt.
Prop:
optionalText?
Type:
string
Standardverdi:
"Valgfritt"
Beskrivelse:
Tekst som vises i valgfritt-merkingen
Prop:
tagText?
Type:
string
Beskrivelse:
Tekst som vises i en tag ved siden av label
Prop:
hasError?
Type:
boolean
Beskrivelse:
Indikerer om feltet har en feil.
Prop:
errorMessage?
Type:
string
Beskrivelse:
Tekst som vises under datovelgeren ved feiltilstand
Prop:
disabled?
Type:
boolean
Standardverdi:
false
Beskrivelse:
Indikerer om feltet er deaktivert.
Prop:
inline?
Type:
boolean
Standardverdi:
false
Beskrivelse:
Indikerer om feltet skal vises inline.
Prop:
fullwidth?
Type:
boolean
Standardverdi:
false
Beskrivelse:
Indikerer om feltet skal ta opp full bredde.
Prop:
useWrapper?
Type:
boolean
Standardverdi:
true
Beskrivelse:
Indikerer at feltet skal ha synlig label og hjelpetekst
Prop:
id
Type:
string
Beskrivelse:
Spesifiserer den unike identifikatoren for feltet.
Prop:
counter?
Type:
boolean
Standardverdi:
false
Beskrivelse:
Indikerer om en teller skal vises.
Prop:
counterMaxLength?
Type:
number
Beskrivelse:
Spesifiserer maksimal lengde for telleren.
Prop:
inputSize?
input-size?
Type:
"small" | "medium" | "xsmall"
Standardverdi:
"medium"
Beskrivelse:
Visuell stĂžrrelse via input-wrapper.

Events

Event:
change
Type:
Event
Beskrivelse:
Returnerer verdi som streng
Event:
toggleHelpText
Type:
CustomEvent
Beskrivelse:
Returnerer event.detail { isOpen: true } eller event.detail { isOpen: false } nÄr hjelpeteksten Äpnes eller lukkes