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.

TypeBeskrivelse
StandardLabel, placeholder og tekstfelt
Med hjelpetekstKort hjelpetekst under label
Med ekspanderende hjelpetekstHjelpetekst bak “Les mer”-knapp
Valgfritt-tag/obligatorisk tagViser 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.

States

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

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 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

Gjþr slik – tydelige og konsise labels
Skriv tydelig og konsise labels

UnngÄ

UnngĂ„ – unĂždvendig innhold og kolon pĂ„ slutten av label
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

Gjþr slik – bredde som indikerer forventet innhold
Bredden til inputfeltet bÞr gi brukeren en indikasjon pÄ hva som forventes at de fyller inn

UnngÄ

UnngĂ„ – for brede eller smale felt
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.

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.

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

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

ElementBeskrivelse
Label (etikett)Kort og tydelig ledetekst som beskriver hva brukeren skal skrive
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 inputfeltet der brukeren skriver inn
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-textinput");

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
sizenumberSpesifiserer bredde pÄ feltet i antall tegn.
typecolor
date
datetime-local
email
file
month
number
password
search
tel
text
time
url
week
Spesifiserer typen av feltet. Standard er 'text'.
omitSearchIconbooleanIndikerer om sĂžkeikonet skal utelates.
valuestringSpesifiserer den nÄvÊrende verdien av feltet.
autocompletestringSpesifiserer hvordan type `autocomplete` feltet har. Standard er 'off'.
suffixstringSpesifiserer et suffiks som vises etter feltet.
prefixstringSpesifiserer et prefiks som vises fĂžr feltet.
iconNameRighticonSpesifiserer navnet pÄ ikonet som vises til hÞyre for feltet.
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.
EventBeskrivelse
changeReturnerer verdi som streng
toggleHelpTextReturnerer event.detail { isOpen: true } eller event.detail { isOpen: false } nÄr hjelpeteksten Äpnes eller lukkes