验证功能是AngularJS里面最酷炫的功能之一,它可以让你写出一个具有良好用户体验的Web应用。
在AngularJS中,有许多用于验证的指令。我们将先学习几个最流行的内置指令,然后再创建一个自定义验证规则的指令。
AngularJS可以让我们轻松的处理客户端验证。虽然我们不能仅靠客户端验证来保证我们Web应用的安全性,但他们提供了良好用户体验。
我们首先必须确保form上标签有一个name属性,像上面的例子一样。
我们可以进行一些基本的验证,例如最小长度,最大长度,等等,这些都是HTML5自带的属性验证功能。
Tips:通常需要在form标签中加上novalidate
属性,这样可以禁用浏览器自带的验证功能,从而使用AngularJS提供的。
下面来看看我们可以在input中设置哪些验证:
必填
最小长度
验证至少输入{number}个字符,使用指令ng-minlength=“{number}”:
最大长度
验证至多输入{number}个字符,使用指令ng-maxlength=“{number}”:
正则匹配
确保输入匹配一个正则表达式,使用指令ng-pattern="/PATTERN/"
:
验证输入是一个Email,设置input的type属性为email:
数字
验证输入是一个数字,设置input的type属性为number:
Url
验证输入是一个URL,设置input的type属性为url:
自定义验证
AngularJS可以很容易的使用指令来添加自定义验证。例如,我们要验证我们的用户名是可用的(在数据库中不重复)。要做到这一点,我们将实现一个指令,它在输入字符变化时触发一个Ajax请求:
var app = angular.module('validationExample',[]);app.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,false);
});
});
}
}
}]);
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a title="复制代码">
<img src="https://www.jb51.cc/res/2019/03-06/23/51e409b11aa51c150090697429a953ed.gif" alt="复制代码">