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
NÄr brukeren kan velge flere alternativer
NÄr brukeren skal velge ett av fÄ alternativer
NÄr brukeren skal skrive for Ä sÞke etter alternativer
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.
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 |
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
UnngÄ
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
UnngÄ
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
UnngÄ
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 setteautocomplete="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:
Beskriver hvordan du gjĂžr text input tilgjengelige
Forklarer hvorfor bruk av kun placeholder tekst bÞr unngÄs
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 |
Implementasjon i kode
Hvordan ta komponenten i bruk?
import @oslokommune/punkt-elements/dist/pkt-textinput.js;
import { PktTextinput } from '@oslokommune/punkt-react';
<script src="https://punkt-cdn.oslo.kommune.no/latest/elements/pkt-textinput.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-textinput");
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 |
size | number | Spesifiserer bredde pÄ feltet i antall tegn. |
type | color date datetime-local email file month number password search tel text time url week | Spesifiserer typen av feltet. Standard er 'text'. |
omitSearchIcon | boolean | Indikerer om sĂžkeikonet skal utelates. |
value | string | Spesifiserer den nÄvÊrende verdien av feltet. |
autocomplete | string | Spesifiserer hvordan type `autocomplete` feltet har. Standard er 'off'. |
suffix | string | Spesifiserer et suffiks som vises etter feltet. |
prefix | string | Spesifiserer et prefiks som vises fĂžr feltet. |
iconNameRight | icon | Spesifiserer navnet pÄ ikonet som vises til hÞyre for feltet. |
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. |
Event | Beskrivelse |
---|---|
change | Returnerer verdi som streng |
toggleHelpText | Returnerer event.detail { isOpen: true } eller event.detail { isOpen: false } nÄr hjelpeteksten Äpnes eller lukkes |