Intro til HTML5-begrænsning Validering
Interaktive hjemmesider og applikationer kan ikke forestilles uden formularer, der gør det muligt for os forbinde med vores brugere, og til få dataene vi har brug for for at sikre glatte transaktioner med dem. Vi har brug for gyldig brugerindgang, men vi skal erhverve det på en sådan måde ikke frustrerer vores brugere for meget.
Mens vi kan forbedre anvendeligheden af vores formularer med smart udvalgt UX-designmønstre, har HTML5 også en indbygget mekanisme til begrænsning af validering, der tillader os at fange inputfejl lige i forenden.
I dette indlæg vil vi fokusere på browser-leveret begrænsning validering, og se på, hvordan frontend-udviklere kan Sikker gyldig brugerindgang ved hjælp af HTML5.
Hvorfor har vi brug for validering af indgangen til slutningen
Input validering har to hovedmål. Det indhold, vi får, er:
1. Nyttige
Vi behøver anvendelige data, vi kan arbejde med. Vi skal få folk til at komme ind realistiske data i det rigtige format. For eksempel er ingen, der lever i dag, født for 200 år siden. At få data som dette kan virke sjovt i starten, men på lang sigt er det irriterende og fylder vores database med ubrugelige data.
2. Secure
Når vi henviser til sikkerhed, betyder det, at vi skal forhindre injektion af ondsindet indhold - enten bevidst eller ved et uheld.
Nyttighed (at få rimelige data) kan opnås kun på klientsiden, backend teamet kan ikke hjælpe for meget med dette. At opnå sikkerhed, front- og backend-udviklere skal arbejde sammen.
Hvis frontend-udviklere korrekt validerer input på klientsiden, vil backend team bliver nødt til at håndtere meget mindre sårbarheder. Hacking (et websted) indebærer ofte indsender ekstra data, eller data i det forkerte format. Udviklere kan kæmpe mod sikkerhedshuller som disse, kæmpe succesfuldt fra fronten.
For eksempel anbefaler denne PHP sikkerhedsvejledning at kontrollere alt, hvad vi kan på klientsiden. De understreger vigtigheden af frontend-input validering ved at give mange eksempler, såsom:
"Input validering fungerer bedst med ekstremt begrænsede værdier, fx når noget skal være et helt tal eller en alfanumerisk streng eller en HTTP-URL."
I frontend input validering er vores job til pålægge rimelige begrænsninger på brugerindgang. HTML5's begrænsningsvalideringsfunktion giver os mulighed for at gøre det.
HTML5-begrænsning validering
Før HTML5 var frontend-udviklere begrænset til validering af brugerindgang med JavaScript, som var en kedelig og fejlagtig proces. For at forbedre validering af klientsideformularer har HTML5 introduceret en begrænsning validering algoritme, der kører i moderne browsere, og kontrollerer gyldigheden af det indsendte input.
For at foretage evalueringen bruger algoritmen den valideringsrelaterede attributter af inputelementer, såsom ,
, og
. Hvis du vil vide, hvordan begrænsning af validering sker trin for trin i browseren, skal du tjekke denne WhatWG doc.
Takket være HTML5's begrænsningsvalideringsfunktion kan vi udføre alle standard input validering opgaver på klientsiden uden JavaScript, udelukkende med HTML5.
For at udføre mere komplekse valideringsrelaterede opgaver giver HTML5 os en Begræns validering JavaScript API vi kan bruge til at oprette vores brugerdefinerede validering scripts.
Validér med semantiske indgangstyper
HTML5 har introduceret semantiske inputtyper at det - udover at angive betydningen af elementet for brugeragenter - også kan bruges til validere brugerindgang ved at begrænse brugerne til et bestemt inputformat.
Udover de inputtyper, der allerede har eksisteret før HTML5 (tekst
, adgangskode
, Indsend
, Nulstil
, radio
, afkrydsningsfeltet
, knap
, skjult
), kan vi også bruge følgende semantiske HTML5 inputtyper: e-mail
,tel
,url
,nummer
,tid
,dato
,dato tid
,datetime-local
, måned
,uge
, rækkevidde
, Søg
,farve
.
Vi kan sikkert bruge HTML5-inputtyper med ældre browsere, da de opfører sig som en felt i browsere, der ikke understøtter dem.
Lad os se, hvad der sker, når brugeren indtaster den forkerte indtastningstype. Sig, at vi har oprettet et e-mail-indtastningsfelt med følgende kode:
Når brugeren skriver en streng, der ikke bruger et e-mail-format, er begrænsningsvalideringsalgoritmen Indsender ikke formularen, og returnerer en fejlmeddelelse:
Den samme regel gælder også andre inputtyper, for eksempel til type = "url"
Brugere kan kun indsende et input, der følger URL-formatet (starter med en protokol, f.eks http: //
eller ftp: //
).
Nogle inputtyper bruger et design som Tillader ikke engang brugere at indtaste et forkert inputformat, for eksempel farve
og rækkevidde
.
Hvis vi bruger farve
input type brugeren er begrænset til enten at vælge en farve fra farvevælgeren eller opholde sig med standard sorten. Indtastningsfeltet er begrænset af design, derfor giver det ikke meget chance for brugerfejl.
Når det er hensigtsmæssigt, er det værd at overveje at bruge HTML-tag, der virker på samme måde som disse indbyggede begrænsninger; det lader brugerne vælge fra en dropdown liste.
Brug HTML5's Validation Attributes
Brug af semantiske inputtyper sætter visse begrænsninger på, hvad brugere må indsende, men i mange tilfælde ønsker vi at gå lidt længere. Dette er når valideringsrelaterede attributter af tag kan hjælpe os ud.
Valideringsrelaterede attributter tilhører bestemte inputtyper (de kan ikke bruges på alle typer), som de pålægger yderligere begrænsninger for.
1. påkrævet
for at få en gyldig input på alle måder
Det påkrævet
Attribut er den mest kendte HTML-valideringsattribut. Det er en boolesk attribut hvilket betyder det tager ikke nogen værdi, vi skal bare simpelthen placere den inde i tag hvis vi vil bruge det:
Hvis brugeren glemmer at indtaste en værdi i et påkrævet inputfelt, skal browseren returnerer en fejlmeddelelse Det advarer dem om at udfylde marken, og de kan ikke indsende formularen indtil de har givet et gyldigt input. Derfor er det vigtigt altid markere visuelt krævede felter til brugere.
Det påkrævet
attributten kan være bruges sammen med følgende inputtyper: tekst
, Søg
, url
, tel
, e-mail
, adgangskode
, dato
, dato tid
, datetime-local
, måned
, uge
,tid
, nummer
, afkrydsningsfeltet
, radio
, fil
, plus med og
HTML tags.
2. min
, max
og trin
for nummer validering
Det min
, max
og trin
attributter sætter os i stand til sætte begrænsninger på nummer input felter. De kan bruges sammen med rækkevidde
, nummer
, dato
, måned
, uge
, dato tid
, datetime-local
, og tid
input typer.
Det min
og max
attributter giver en god måde at nemt udelukker urimelige data. Eksempelet nedenfor nedenfor tvinger brugerne til at indgive en alder mellem 18 og 120.
Når begrænsningsvalideringsalgoritmen støder på en brugerindgang mindre end min
, eller større end max
værdi forhindrer det i at nå bagenden og returnerer en fejlmeddelelse.
Det trin
attribut angiver et numerisk interval mellem de retlige værdier af et numerisk indtastningsfelt. For eksempel, hvis vi ønsker, at brugerne kun vælger fra springår, kan vi tilføje trin = "4"
attribut til feltet. I eksemplet nedenfor brugte jeg nummer
input type, da der ikke er nogen type = "år"
i HTML5.
Med de forudbestemte begrænsninger kan brugerne kun vælge mellem springårene mellem 1972 og 2016, hvis de bruger den lille pil op, der følger med nummer
input type. De kan også indtaste en værdi manuelt i inputfeltet, men hvis det ikke overholder begrænsningerne, returnerer browseren en fejlmeddelelse.
3. MAXLENGTH
til validering af tekstlængde
Det MAXLENGTH
attribut gør det muligt at Indstil en maksimal tegnlængde for tekstindtastningsfelter. Den kan bruges sammen med tekst
, Søg
, url
, tel
, e-mail
og adgangskode
inputtyper og med HTML-tag.
Det MAXLENGTH
attribut kan være en glimrende løsning til telefonnummerfelter, der ikke kan have mere end et bestemt antal tegn, eller for kontaktformularer, hvor vi ikke ønsker, at brugerne skal skrive mere end en bestemt længde.
Kodestykket nedenfor viser et eksempel på sidstnævnte, det begrænser brugerbeskeder til 500 tegn.
Det MAXLENGTH
attribut returnerer ikke en fejlmeddelelse, men browseren lader simpelthen ikke brugere skrive mere end det angivne tegnnummer. Derfor er det afgørende at informere brugerne om begrænsningen, ellers forstår de ikke, hvorfor de ikke kan fortsætte med at skrive.
4. mønster
til Regex validering
Det mønster
attribut tillade os at Brug regelmæssige udtryk i vores input validering proces. Et regulært udtryk er a foruddefineret sæt tegn der danner et bestemt mønster. Vi kan også bruge det til at søge strenge, der følger mønsteret, eller at håndhæve et bestemt format defineret af mønsteret.
Med mønster
attributt vi kan gøre sidstnævnte - begrænse brugere til at indsende deres input i et format som matcher det givne regulære udtryk.
Det mønster
Attributtet har mange brugssager, men det kan være særligt nyttigt, når vi vil validere et adgangskodefelt.
Nedenstående eksempel kræver, at brugerne indtaster et kodeord, der er mindst 8 tegn langt og indeholder mindst et bogstav og et tal (kilde til den regex jeg brugte).
Et par flere ting
I denne artikel har vi set et kig på, hvordan man gør brug af browser-leveret form validering tilvejebragt af HTML5's nativ begrænsningsvalideringsalgoritme. For at oprette vores brugerdefinerede valideringsskripter skal vi bruge API for begrænsning af validering, der kan være det næste skridt i raffinering af formularvalideringsfærdigheder.
HTML5-formularer er tilgængelige ved hjælp af teknologier, så vi behøver ikke nødvendigvis at bruge aria-påkrævet
ARIA-attribut til at markere de nødvendige indtastningsfelter til skærmlæsere. Det kan dog stadig være nyttigt at tilføje tilgængelighedsstøtte til ældre browsere. Det er også muligt at afvige fra begrænsning validering ved at tilføje novalidate
boolsk attribut til element.