Intro til HTML5-begrensnings validering
Interaktive nettsteder og applikasjoner kan ikke forestilles uten former som gjør det mulig for oss Koble til våre brukere, og til få dataene Vi trenger for å sikre jevne transaksjoner med dem. Vi trenger gyldig brukerinngang, men vi må anskaffe det på en slik måte ikke frustrerer våre brukere for mye.
Mens vi kan forbedre brukervennligheten av våre skjemaer med smart utvalgte UX-designmønstre, har HTML5 også en innfødt mekanisme for begrensningsvalidering som tillater oss å få innspillingsfeil rett foran.
I dette innlegget vil vi fokusere på nettleser-gitt begrensning validering, og se på hvordan frontend utviklere kan sikre gyldig brukerinngang ved hjelp av HTML5.
Hvorfor trenger vi inngangs validering på forhånd
Input validering har to hovedmål. Innholdet vi får må være:
1. Nyttig
Vi trenger brukbare data vi kan jobbe med. Vi må få folk til å skrive inn realistiske data i riktig format. For eksempel er ingen som lever i dag født for 200 år siden. Å få data som dette kan virke morsomt først, men på lang sikt er det irriterende og fyller databasen med ubrukelige data.
2. Sikre
Når det gjelder sikkerhet, betyr dette at vi må hindre injeksjon av skadelig innhold - enten bevisst eller ved et uhell.
Nyttig (å få fornuftige data) kan oppnås bare på klientsiden, Backend-teamet kan ikke hjelpe for mye med dette. Å oppnå sikkerhet, Front- og backend-utviklere trenger å jobbe sammen.
Hvis frontend utviklere korrekt validerer innspill på klientsiden, vil backend-teamet må håndtere mye mindre sårbarheter. Hacking (et nettsted) innebærer ofte sender inn ekstra data, eller data i feil format. Utviklere kan bekjempe sikkerhetshull som disse, lykkes med å kjempe fra fronten.
For eksempel anbefaler denne PHP-sikkerhetsguiden å sjekke alt vi kan på klientsiden. De legger vekt på viktigheten av inngangsvalidering av frontend ved å gi mange eksempler, for eksempel:
"Input validering fungerer best med ekstremt begrensede verdier, for eksempel når noe må være et heltall, eller en alfanumerisk streng eller en HTTP-URL."
I frontend inngangsvalidering er vår jobb til pålegge rimelige begrensninger på brukerinngang. HTML5s begrensningsvalideringsfunksjon gir oss muligheten til å gjøre det.
HTML5-begrensnings validering
Før HTML5 ble frontend utviklere begrenset til validering av brukerinngang med JavaScript, som var en kjedelig og feiltakelig prosess. For å forbedre validering av klientsiden, har HTML5 introdusert en begrensning validering algoritmen som kjører i moderne nettlesere, og sjekker gyldigheten av den innsendte innsatsen.
For å gjøre evalueringen bruker algoritmen valideringsrelaterte attributter av inngangselementer, som for eksempel ,
, og
. Hvis du vil vite hvordan begrensning av validering skjer trinnvis i nettleseren, sjekk ut denne WhatWG doc.
Takket være HTML5s begrensningsvalideringsfunksjon, kan vi utføre alle standardinngangsvalideringsoppgaver på klientsiden uten JavaScript, utelukkende med HTML5.
For å utføre mer komplekse valideringsrelaterte oppgaver, gir HTML5 oss en Begrens validering JavaScript API Vi kan bruke til å konfigurere våre tilpassede valideringsskript.
Validere med semantiske inngangstyper
HTML5 har introdusert semantiske inngangstyper som også kan brukes til, bortsett fra å indikere betydningen av elementet for brukeragenter validere brukerinngang ved å begrense brukerne til et bestemt inngangsformat.
Foruten inngangstyper som allerede har eksistert før HTML5 (tekst
, passord
, sende inn
, tilbakestille
, radio
, avkrysnings
, knapp
, skjult
), kan vi også bruke følgende semantiske HTML5 inngangstyper: e-post
,tlf
,url
,Nummer
,tid
,Dato
,dato tid
,datetime-local
, måned
,uke
, område
, Søke
,farge
.
Vi kan trygt bruke HTML5-inngangstyper med eldre nettlesere, da de vil oppføre seg som en feltet i nettlesere som ikke støtter dem.
La oss se hva som skjer når brukeren går inn i feil type. Si at vi har opprettet et e-post-felt med følgende kode:
Når brukeren skriver en streng som ikke bruker et e-postformat, er begrensningsvalideringsalgoritmen sender ikke skjemaet, og returnerer en feilmelding:
Den samme regelen gjelder også andre inngangstyper, for eksempel for type = "URL"
Brukerne kan bare sende inn et innspill som følger URL-formatet (starter med en protokoll, for eksempel http: //
eller ftp: //
).
Noen inngangstyper bruker et design som Tillater ikke at brukerne oppgir feil inngangsformat, for eksempel farge
og område
.
Hvis vi bruker farge
inngangstype brukeren er begrenset til å velge en farge fra fargeplukeren eller oppholde seg med standard svart. Inntastingsfeltet er begrenset av design, derfor forlater det ikke mye sjanse for brukerfeil.
Når det er hensiktsmessig, er det verdt å vurdere å bruke HTML-kode som fungerer på samme måte som disse innspillingsformene som er begrenset av design det lar brukerne velge fra en rullegardinliste.
Bruk HTML5s Validation Attributes
Bruke semantiske inngangstyper setter visse begrensninger på hva brukerne har lov til å sende inn, men i mange tilfeller vil vi gå litt lenger. Dette er når valideringsrelaterte attributter av tag kan hjelpe oss ut.
Valideringsrelaterte attributter tilhører bestemte typer input (de kan ikke brukes på alle typer) som de pålegger ytterligere begrensninger på.
1. nødvendig
for å få en gyldig innsats for all del
De nødvendig
Attributt er det mest kjente HTML-valideringsattributtet. Det er en boolesk attributt som betyr det tar ingen verdi, vi må bare bare plassere den inne i merk hvis vi vil bruke det:
Hvis brukeren glemmer å legge inn en verdi i et obligatorisk innfelt, må nettleseren returnerer en feilmelding Det advarer dem om å fylle i feltet, og de kan ikke sende skjemaet inntil de har gitt en gyldig inngang. Derfor er det viktig å alltid Merk visuelt obligatoriske felt til brukere.
De nødvendig
attributt kan være brukes sammen med følgende inngangstyper: tekst
, Søke
, url
, tlf
, e-post
, passord
, Dato
, dato tid
, datetime-local
, måned
, uke
,tid
, Nummer
, avkrysnings
, radio
, fil
, pluss med og
HTML-koder.
2. min
, max
og skritt
for nummer validering
De min
, max
og skritt
attributter gjør det mulig for oss å sette begrensninger på nummerinngangsfeltene. De kan brukes sammen med område
, Nummer
, Dato
, måned
, uke
, dato tid
, datetime-local
, og tid
input typer.
De min
og max
attributter gir en fin måte å enkelt utelukker urimelige data. Eksempelet nedenfor nedenfor krever at brukere sender en alder mellom 18 og 120.
Når begrensningsvalideringsalgoritmen støter på en brukerinngang mindre enn min
, eller større enn max
verdi, hindrer den fra å nå baksiden, og returnerer en feilmelding.
De skritt
Egenskap angir et numerisk intervall mellom de juridiske verdiene til et numerisk inntastingsfelt. For eksempel, hvis vi vil at brukerne skal velge bare fra springår, kan vi legge til trinn = "4"
attributt til feltet. I eksemplet nedenfor brukte jeg Nummer
inngangstype, da det ikke er noe type = "år"
i HTML5.
Med de forhåndsinnstilte begrensningene kan brukerne bare velge mellom springårene mellom 1972 og 2016 hvis de bruker den lille opp-pilen som følger med Nummer
inngangstype. De kan også skrive inn en verdi manuelt i inntastingsfeltet, men hvis det ikke oppfyller begrensningene, vil nettleseren returnere en feilmelding.
3. maks lengde
for validering av tekstlengde
De maks lengde
attributt gjør det mulig å sett inn en maksimal tegnlengde for tekstfelt. Den kan brukes sammen med tekst
, Søke
, url
, tlf
, e-post
og passord
inntastetyper, og med HTML-taggen.
De maks lengde
Attributt kan være en utmerket løsning for telefonnummerfelt som ikke kan ha mer enn et visst antall tegn, eller for kontaktskjemaer der vi ikke vil at brukerne skal skrive mer enn en bestemt lengde.
Kodestykket nedenfor viser et eksempel på sistnevnte, det begrenser brukermeldinger til 500 tegn.
De maks lengde
Egenskap returnerer ikke en feilmelding, men nettleseren lar ikke brukerne skrive mer enn det angitte tegnnummeret. Derfor er det viktig å informere brukerne om begrensningen, ellers forstår de ikke hvorfor de ikke kan fortsette med å skrive.
4. mønster
for Regex validering
De mønster
attributt tillate oss å bruk vanlige uttrykk i vår inngangsvalideringsprosess. Et vanlig uttrykk er a forhåndsdefinert sett med tegn som danner et visst mønster. Vi kan bruke den til å søke etter strenger som følger mønsteret, eller for å håndheve et bestemt format definert av mønsteret.
Med mønster
attributt vi kan gjøre sistnevnte - begrense brukere til å sende inn sine innspill i et format som samsvarer med det gjeldende regulære uttrykket.
De mønster
Attributt har mange brukstilfeller, men det kan være spesielt nyttig når vi vil validere et passordfelt.
Eksempelet nedenfor krever at brukerne oppgir et passord som er minst 8 tegn langt, og inneholder minst ett brev og ett nummer (kilde til regex jeg brukte).
Noen flere ting
I denne artikkelen tok vi en titt på hvordan å gjøre bruk av formular validering av nettleser levert av HTML5s nasjonale begrensningsvalideringsalgoritme. For å lage våre egendefinerte valideringsskript, må vi bruke Begrensningsvaliderings-API som kan være neste trinn i validering av raffinering.
HTML5-skjemaer er tilgjengelige med hjelpeteknologi, så vi trenger ikke nødvendigvis å bruke aria-krevde
ARIA-attributt for å markere nødvendige inntastingsfelt for skjermlesere. Men det kan fortsatt være nyttig å legge til tilgjengelighetsstøtte for eldre nettlesere. Det er også mulig å Ikke bruk begrensningsvalidering ved å legge til novalidate
boolesk attributt til element.