表單內容以下圖,包括經常使用的用戶名、密碼、確認密碼、手機、郵箱等
git
一、表單屬性:github
$dirty:已經修改過正則表達式
$invalid:不合法bootstrap
$valid:合法app
$error:錯誤佈局
$pristine:未修改過ui
novalidate 阻止表單默認操做
spa
<span class="col-4" ng-show="myForm.password.$dirty && myForm.password.$invalid">
<small class="text-danger" ng-show="myForm.password.$error.required">
密碼是必填的
</small>
<small class="text-danger" ng-show="myForm.password.$error.minlength">
長度不能小於8位
</small>
<small class="text-danger" ng-show="myForm.password.$error.maxlength">
長度不能大於64位
</small>
</span>
ng-minlength:最小長度code
ng-maxlength:最大長度orm
required:必填
ng-pattern:正則表達式驗證
ng-disabled:按鈕禁用
<input type="text" class="col-6" name="phone" ng-model="phone" ng-pattern="/(^0\d{2,3}-\d{7,8}$)|(^1[3|4|5|6|7|8][0-9]{9}$)/" required/>
<button ng-disabled="myForm.$invalid" ng-click="submit()">submit</button>
四、確認密碼自定義指令
確認密碼這個暫時沒法經過原有的指令實現,因此使用了directive,主要是經過觀察兩個輸入框的值,若是不相等則在確認密碼欄後顯示錯誤信息,以下
var app = angular.module('app',[]);
app.directive('compare',function(){
return {
require: 'ngModel',
link: function(scope,ele,attrs,ctrl){
var flag = false;
scope.$watch("password",function(scope,ele,attrs,ctrl){
var password2 = attrs.myForm.password2.$viewValue;
if(scope != password2) {
flag = true;
}else{
flag = false;
}
attrs.myForm.password2.$invalid = flag;
})
scope.$watch("password2",function(scope,ele,attrs,ctrl){
var password = attrs.myForm.password.$viewValue;
if(scope != password) {
flag = true;
}else{
flag = false;
}
attrs.myForm.password2.$invalid = flag;
})
}
}
})
https://github.com/liaoanran/angular-formValidation