最近,在学习angular下面就和大家分享一个简单的表单验证实例
在分享实例之前先整理一下,一些基础知识
input元素上使用的所有验证选项:
1必填项 <input type="text" required/>
2最小长度 <input type="text" ng-minlength="5"/>
3最大长度 <input type="text" ng-maxlength="20"/>
4模式匹配(正则表达式)<input type="text" ng-pattern="[a-zA-z]"/>
5电子邮件(type属性) <input type="email" name ="email"/>
6数字(type属性)<input type="number" name ="age"/>
7 URL (type属性)<input type="url" name ="homepage"/>
8自定义验证(比如服务端验证用户名是否被使用)
9 在表达中的控制变量
格式如下:formName.inputFieldName.property
未修改表单
formName.inputFieldName.$pristine = true;(反之为false)
修改过表单
formName.inputFieldName.$dirty = true
合法的表单
formName.inputFieldName.$valid = true
不合法的表单
formName.inputFieldName.$invalid = true
错误--验证失败
formName.inputFieldName.$error= true
有个这些基本知识后,下面给大家展示,表单验证的实例
SignUp.html
angularScript.js
angular.module('myApp', []).directive('ensureUnique',['$http', function($http) { return { require: 'ngModel', link: function(scope, ele, attrs, c) { scope.$watch(attrs.ngModel, function() { $http({ method: 'POST', url: '/api/check/' +attrs.ensureUnique, data: {'field': attrs.ensureUnique} }).success(function(data, status,headers, cfg) { c.$setValidity('unique',data.isUnique); }).error(function(data, status,headers, cfg) { c.$setValidity('unique', false); }); }); } };}]).directive('ngFocus',[function() { var FOCUS_CLASS = "ng-focused"; return { restrict: 'A', require: 'ngModel', link: function(scope, element, attrs, ctrl){ ctrl.$focused = false; element.bind('focus', function(evt) { element.addClass(FOCUS_CLASS); scope.$apply(function() {ctrl.$focused= true;}); }).bind('blur', function(evt) { element.removeClass(FOCUS_CLASS); scope.$apply(function() {ctrl.$focused= false;}); }); } }}]).controller('signupController',['$scope', function($scope) { $scope.submitted = false; $scope.signupForm = function() { if ($scope.signup_form.$valid) { // Submit as normal } else { $scope.signup_form.submitted = true; } }}]);
下面是