标签:
angular中的表单验证很强大,
一共有5中验证信息,$valid,$invalid,$pristine,$dirty,$error.
$valid-----当验证通过的时候,为true,不通过的时候为false
$invalid----当验证不通过的时候,为true,通过的时候为true
$pristine---当值为初始值的时候,为true,一旦有过改动即为false
$dirty---当值有改动过即为true,其他即为false
$error---包含所有的验证信息,如以下例子,$error = {required:false,minlength:false,pattern:false}。哪条验证不通过,它的值就为true。
以上五个值可以通过表单的name来获取到,参考如下:
<form novalidate name="myForm">
<input type="text" name="myText" ng-model="text" required ng-minlength="5" ng-pattern="/^[a-zA-Z]+$/">
<div>{{ myForm.myText.$valid }}</div>
<div>{{ myForm.myText.$invalid }}</div>
<div>{{ myForm.myText.$pristine }}</div>
<div>{{ myForm.myText.$dirty }}</div>
<div>{{ myForm.myText.$error }}</div>
</form>
可以结合ng-repeat filter $error等来做一些表单验证
<script> var m1 = angular.module(‘myApp‘,[]); m1.controller(‘Aaa‘,[‘$scope‘,function($scope){ $scope.text = ‘hello‘; $scope.regText = { regT : ‘default‘, regList : [ { name : ‘default‘, text : ‘请输入用户名‘ }, { name : ‘required‘, text : ‘不能为空‘ }, { name : ‘pattern‘, text : ‘只能为字母‘ }, { name : ‘pass‘, text : ‘√‘ }, ], change : function(err){ console.log(err); for(var attr in err){ if(err[attr]==true){ $scope.regText.regT = attr; return; } } $scope.regText.regT = ‘pass‘; } }; }]); </script> </head> <body> <div ng-controller="Aaa"> <form novalidate name="nForm"> <label>用户名: <input type="text" name="nText" ng-model="regText.name" required ng-minlength="5" ng-pattern="/^[a-zA-Z]+$/" ng-blur="regText.change(nForm.nText.$error)"> <span ng-repeat="re in regText.regList | filter:regText.regT ">{{re.text}}</span> </label><br><br> <label>密码: <input type="password" name="nPas" ng-model="text" required ng-minlength="5" ng-pattern="/^[a-zA-Z]+$/"> <span>请输入密码</span> </label> </form> </div>
标签:
原文地址:http://www.cnblogs.com/toodeep/p/4971507.html