AngularJS formularvalidering
- Forrige side AngularJS formulær
- Næste side AngularJS API
AngularJS kan validere inputdata.
Formularvalidering
AngularJS tilbyder klientformularvalidering.
AngularJS overvåger tilstande for formulær og inputfelter (input, textarea, select) og giver dig mulighed for at informere brugeren om den aktuelle tilstand.
AngularJS indeholder også information om, om de er blevet rørt eller ændret.
Du kan bruge standard HTML5-attributter til at validere input, eller oprette dine egne valideringsfunktioner.
Klientvaliditet kan ikke alene beskytte brugerinput. Servervaliditet er også nødvendig.
required
Brug HTML5-attributter required
Angivet felt skal udfyldes:
eksempler
Dette inputfelt er obligatorisk:
<form name="myForm"> <input name="myInput" ng-model="myInput" required> </form> <p>Inputfeltets gyldige tilstand er:</p> <h1>{{myForm.myInput.$valid}}</h1>
Brug HTML5-type email
Angivet værdi skal være en e-mail:
eksempler
Dette inputfeltet skal være en e-mail:
<form name="myForm"> <input name="myInput" ng-model="myInput" type="email"> </form> <p>Inputfeltets gyldige tilstand er:</p> <h1>{{myForm.myInput.$valid}}</h1>
Formularstatus og inputstatus
AngularJS opdaterer løbende formularen og inputfeltets tilstand.
Inputfeltet har følgende tilstande:
$untouched
Dette felt er ikke blevet rørt ved$touched
Dette felt er blevet rørt ved$pristine
Dette felt er ikke blevet ændret$dirty
Dette felt er blevet ændret$invalid
Feltindhold er ugyldigt$valid
Feltindhold er gyldigt
De er alle egenskaber for inputfeltet, enten sand eller falsk.
Formularen har følgende tilstande:
$pristine
Ingen felter er blevet ændret$dirty
En eller flere felter er blevet ændret$invalid
Formulardata er ugyldig$valid
Formulardata er gyldig$subscribed
Formularen er blevet indsendt
De er alle egenskaber for formularen, og kan være sand eller falsk.
Du kan bruge disse tilstande til at vise meningsfulde beskeder til brugeren. For eksempel, hvis et felt er påkrævet og brugeren efterlader det tomt, bør brugeren blive advaret:
eksempler
Vis en fejlmeddelelse, hvis feltet allerede er rørt ved og er tomt:
<input name="myName" ng-model="myName" required> <span ng-show="myForm.myName.$touched && myForm.myName.$invalid">Navnet er påkrævet.</span>
CSS-klasser
AngularJS tilføjer CSS-klasser til formularen og inputfeltet baseret på deres tilstand.
Følgende klasser er blevet tilføjet til eller fjernet fra inputfeltet:
ng-untouched
Dette felt er ikke blevet rørt vedng-touched
Dette felt er blevet rørt vedng-pristine
Dette felt er ikke blevet ændretng-dirty
Dette felt er blevet ændretng-valid
Feltindhold er gyldigtng-invalid
Feltindhold er ugyldigtng-valid-key
Valider en nøgle hver gang. Eksempel:ng-valid-required
er meget nyttig, når der er flere nødvendige valideringerng-invalid-key
Eksempel:ng-invalid-required
Følgende klasser er blevet tilføjet til eller fjernet fra formularen:
ng-pristine
Ingen felter er blevet ændretng-dirty
En eller flere felter er blevet ændretng-valid
Formulardata er gyldigng-invalid
Formulardata er ugyldigng-valid-key
Valider en nøgle hver gang. Eksempel:ng-valid-required
er meget nyttig, når der er flere nødvendige valideringerng-invalid-key
Eksempel:ng-invalid-required
Hvis værdien repræsenteret af klassen er false
så vil disse klasser blive fjernet.
Tilføj stil til disse klasser for at give din applikation en bedre og mere intuitiv brugergrænseflade.
eksempler
Anvend standard CSS til at anvende stil:
<style> input.ng-invalid { baggrundsfarve: pink; }; input.ng-valid { background-color: lightgreen; }; </style>
Man kan også indstille formularens stil.
eksempler
Anvender stil på både uændrede (originale) og ændrede formulær:
<style> form.ng-pristine { baggrundsfarve: lyseblå; }; form.ng-dirty { baggrundsfarve: pink; }; </style>
brugerdefineret validering
at oprette en brugerdefineret valideringsfunktion kræver nogle færdigheder; du skal tilføje en ny instruks til applikationen og bruge visse specifikke parametre til at håndtere valideringen inde i funktionen.
eksempler
opret din egen instruks, der indeholder en brugerdefineret valideringsfunktion, og brug my-directive
referere til det.
feltet er gyldigt kun, når værdien indeholder tegnet "e":
<form name="myForm"> <input name="myInput" ng-model="myInput" required my-directive> </form> <script> var app = angular.module('myApp', []); app.directive('myDirective', function() { return { kræver: 'ngModel', link: function(scope, element, attr, mCtrl) { function myValidation(value) { hvis (value.indexOf("e") > -1) { mCtrl.$setValidity('charE', true); } ellers { mCtrl.$setValidity('charE', false); }; return value; }; mCtrl.$parsers.push(myValidation); }; }; }); </script>Eksempel Forklaret:
I HTML vil den nye instruks tilføjes ved hjælp af attributten my-directive
for at referere til.
I JavaScript tilføjer vi først en variabel kaldet myDirective
ny instruks.
husk, når du navngiver en instruks, skal du bruge pelskiftning, som myDirective
men når du kalder det, skal du bruge et flertalsnavn adskilt af bindestreger, som my-directive
.
derefter returnér et objekt, hvor vi specificerer, at vi ønsker ngModel
er ngModelController
.
opret en linkfunktion, der accepterer nogle parametre, hvor den fjerde parameter mCtrl
er ngModelController
.
derefter specificer en funktion, i dette eksempel kaldet myValidation
det accepterer en parameter, som er værdien af inputelementet.
test om værdien indeholder bogstaven "e" og sæt modelkontrollers gyldighed til true
eller false
.
sidst,mCtrl.$parsers.push(myValidation);
vil myValidation
Funktioner tilføjes til andre funktioners array, som vil blive udført hver gang værdien ændres.
验证示例
<!DOCTYPE html> <html> <script src="https://cdn.staticfile.net/angular.js/1.6.9/angular.min.js"></script> <body> <h2>验证示例</h2> <form ng-app="myApp" ng-controller="validateCtrl" name="myForm" novalidate> <p>用户名:<br> <input type="text" name="user" ng-model="user" required> <span style="color:red" ng-show="myForm.user.$dirty && myForm.user.$invalid"> <span ng-show="myForm.user.$error.required">用户名是必填项。< </span> </p> <p>电子邮件:<br> <input type="email" name="email" ng-model="email" required> <span style="color:red" ng-show="myForm.email.$dirty && myForm.email.$invalid"> <span ng-show="myForm.email.$error.required">电子邮件是必填项。</span> <span ng-show="myForm.email.$error.email">无效的电子邮件地址。</span> </span> </p> <p> <input type="submit" ng-disabled="myForm.user.$dirty && myForm.user.$invalid || myForm.email.$dirty && myForm.email.$invalid"> </p> </form> <script> var app = angular.module('myApp', []); app.controller('validateCtrl', function($scope) {}} $scope.user = 'Bill Gates'; $scope.email = 'bill.gates@gmail.com'; }); </script> </body> </html>
HTML formulær egenskab novalidate Bruges til at deaktivere standardbrowservalidering.
Eksempel på forklaring:
AngularJS instruktioner ng-model
Bind inputelementet til modellen.
Modellobjekter har to egenskaber:user
og email
.
på grund af ng-show
kun når user eller email er $dirty
og $invalid
viser spans med color:red.
- Forrige side AngularJS formulær
- Næste side AngularJS API