AngularJS lomakkeen validointi
- Edellinen sivu AngularJS lomakkeet
- Seuraava sivu AngularJS API
AngularJS voi validoida syötetiedot.
Lomakkeen validointi
AngularJS tarjoaa asiakassivun lomakkeen validoinnin.
AngularJS seuraa lomakkeen ja syöttökenttien (input, textarea, select) tilaa ja mahdollistaa käyttäjän ilmoittamisen nykyisestä tilasta.
AngularJS sisältää tietoa siitä, onko niitä kosketettu tai muutettu.
Voit käyttää standardeja HTML5-ominaisuuksia syötteen validointiin tai luoda oman validointifunktion.
Asiakassivun validointi ei voi yksin suojella käyttäjän syötteitä. Palvelimella tapahtuva validointi on myös välttämätöntä.
required
Käytä HTML5-ominaisuuksia required
Määritetty kenttä on pakollinen:
esimerkki
Tämä syöttökenttä on pakollinen:
<form name="myForm"> <input name="myInput" ng-model="myInput" required> </form> <p>输入的有效状态是:</p> <h1>{{myForm.myInput.$valid}}</h1>
Käytä HTML5-tyyppiä email
Määritetty arvo on sähköpostiosoite:
esimerkki
Tämä syöttökenttä on sähköpostiosoite:
<form name="myForm"> <input name="myInput" ng-model="myInput" type="email"> </form> <p>输入的有效状态是:</p> <h1>{{myForm.myInput.$valid}}</h1>
表单状态和输入状态
AngularJS 会不断更新表单和输入字段的状态。
输入字段有以下状态:
$untouched
该字段尚未被触摸$touched
该字段已被触摸$pristine
该字段尚未被修改$dirty
该字段已被修改$invalid
字段内容无效$valid
字段内容有效
它们都是输入字段的属性,要么为真,要么为假。
表单有以下状态:
$pristine
尚未修改任何字段$dirty
个或多个字段已被修改$invalid
表单内容无效$valid
表单内容有效$subscribed
表单已被提交
它们都是表单的属性,可以为真或假。
您可以使用这些状态向用户显示有意义的消息。例如,如果某个字段是必填项,而用户将其留空,则应该向用户发出警告:
esimerkki
如果该字段已被触摸且为空,则显示错误消息:
<input name="myName" ng-model="myName" required> <span ng-show="myForm.myName.$touched && myForm.myName.$invalid">Nimi on pakollinen.</span>
CSS 类
AngularJS 根据表单和输入字段的状态向它们添加 CSS 类。
以下类被添加到输入字段或从输入字段中移除:
ng-untouched
该字段尚未被触摸ng-touched
该字段已被触摸ng-pristine
该字段尚未被修改ng-dirty
该字段已被修改ng-valid
字段内容有效ng-invalid
字段内容无效ng-valid-key
每次验证一个密钥。例如:ng-valid-required
,当有多个必须验证的内容时非常有用ng-invalid-key
例如:ng-invalid-required
以下类被添加到表单或从表单中移除:
ng-pristine
没有字段尚未被修改ng-dirty
一个或多个字段已被修改ng-valid
表单内容有效ng-invalid
表单内容无效ng-valid-key
每次验证一个密钥。例如:ng-valid-required
,当有多个必须验证的内容时非常有用ng-invalid-key
例如:ng-invalid-required
如果类代表的值为 false
,则这些类将被删除。
请为这些类添加样式,为您的应用程序提供更好、更直观的用户界面。
esimerkki
使用标准的 CSS 应用样式:
<style> input.ng-invalid { background-color: pink; }; input.ng-valid { background-color: lightgreen; }; </style>
也可以设置表单的样式。
esimerkki
应用样式于未修改的(原始的)表单和已修改的表单:
<style> form.ng-pristine { background-color: lightblue; }; form.ng-dirty { background-color: pink; }; </style>
Mukautettu validointi
Luoda oma validointifunktionsi vaatii taitoa; sinun on lisättävä uusi ohje sovellukseen ja käsiteltävä tiettyjä määritettyjä parametreja validointifunktion sisällä.
esimerkki
Luo oma ohjeesi, joka sisältää mukautetun validointifunktion ja käytä my-directive
viitataan siihen.
Käyttökelpoinen vain, jos arvo sisältää kirjaimen "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 { require: 'ngModel', link: function(scope, element, attr, mCtrl) { function myValidation(value) { if (value.indexOf("e") > -1) { mCtrl.$setValidity('charE', true); } else { mCtrl.$setValidity('charE', false); }; return value; }; mCtrl.$parsers.push(myValidation); }; }; }); </script>Esimerkki selitetty:
HTML:ssä uusi ohje lisätään käyttämällä ominaisuutta my-directive
viitataan.
JavaScriptissä lisäämme ensin nimellä myDirective
uuden ohjeen.
Muista, että nimittäessäsi ohjeen sinun on käytettävä korsokirjaimia, kuten myDirective
,mutta kutsuttaessa sitä sinun on käytettävä yhdistetyn nimen, kuten my-directive
.
Sitten palauta objekti, jossa määritellään tarvitsemamme ngModel
on ngModelController
.
Luo linkki-funktio, joka hyväksyy joitakin parametreja, joista neljäs parametri mCtrl
on ngModelController
.
Määritä sitten funktio, nimeltään myValidation
,se hyväksyy yhden parametrin, joka on syötteen arvo.
Testaa arvo sisältääkö kirjaimen "e" ja aseta mallin valvojan kelvollisuus true
tai false
.
Lopuksi,mCtrl.$parsers.push(myValidation);
会将 myValidation
函数添加到其他函数的数组中,这些函数将在每次输入值更改时执行。
验证示例
<!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-lomakkeen ominaisuudet novalidate Käytetään oletusarvoisen selaimen vahvistuksen estämiseen.
Esimerkki selityksestä:
AngularJS ohjeet ng-model
Sido syöttöelementti malliin.
Malliohjelma on kaksi ominaisuutta:user
ja email
.
Syyt ng-show
vain, kun käyttäjä tai sähköpostiosoite on $dirty
ja $invalid
Näytetään vain span, jossa on color:red.
- Edellinen sivu AngularJS lomakkeet
- Seuraava sivu AngularJS API