表单内容以下图,包括经常使用的用户名、密码、确认密码、手机、邮箱等
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