使用AngularJS怎么实现自定义表单验证功能

  介绍

这篇文章给大家介绍使用AngularJS怎么实现自定义表单验证功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

角实现了大部分常用的HTML5的表单控件的类型(文本、数字、网址、电子邮件、日期、广播、复选框),也实现了很多指令做为验证(必需的,模式,最小长度,最大长度,最小值,最大值)。

在自定义的指令中,我们可以添加我们的验证方法到ngModelController的验证器对美元象上。为了取得这个控制器对象,我们需要requirengModel指令。

验证器对美元在象上的每个方法都接收modelValue和viewValue两个值做为参数。在你绑定的验证方法返回一个值(真、假)之后,角会在内部调用美元setValidity方法。验证会在每一次输入框的值改变($ setViewValue被调用)或者模型的值改变。验证发生在解析器和格式器美元成功运行之后,验证不通过的项会做为ngModelController。错误的美元属性存储起来。

另外,在这个控制器对象上,还有一个美元asyncValidators对象,如果你的验证是异步的,则需要加验证附加在这个对象上,比如说用户注册时输入手机号,我们需要在后端验证该手机号是否已经注册,这个验证方法必须返回一个承诺对象,然后在验证通过时调用延迟对象的决心,失败时调用拒绝,还未完成的异步的验证存储在ngModelController。等待中美元。

例如(注意其中用户的对象,只有验证通过了,才会将值绑定到模型上):

& lt; form  name=皉egister_form", ng-submit=皊ave()“比;   ,,,& lt; div 类=癴orm-group"比;   ,,,,,,,& lt; label 为=皃honeNumber"比;   ,,,,,,,,,,,手机号(不能重复):   ,,,,,,,& lt;/label>   ,,,,,,,& lt; input 类型=皌ext",类=癴orm-control", ng-model=皍ser.phoneNumber", id=皃honeNumber", name=皃honeNumber", required  phone>   ,,,& lt;/div>   ,,,& lt; div 类=癴orm-group"比;   ,,,,,,,& lt; label 为=皍sername"比;   ,,,,,,,,,,,用户名(必须大于五位):   ,,,,,,,& lt;/label>   ,,,,,,,& lt; input 类型=皌ext",类=癴orm-control", ng-model=皍ser.username", id=皍sername", required  username>   ,,,& lt;/div>   ,,,& lt; button 类=癰tn  btn-block  btn-primary",类型=皊ubmit"在提交& lt;/button>   & lt;/form>   & lt; h4>用户对象& lt;/h4>   & lt; pre>   ,,,{{,user  |, json }}   & lt;/pre> & # 39; use 严格# 39;;   angular.module(& # 39;应用# 39;,,[])   .directive(& # 39;电话# 39;,,function  (q,美元,美元http), {   return {才能   ,,,要求:,& # 39;ngModel& # 39;   ,,,链接:,function (范围、时间避署,大敌;;attrs, ctrl), {   ,,,,,ctrl asyncValidators.phone 美元;=,function  (modelValue, viewValue), {   ,,,,,,,var  d =, q.defer美元();   ,,,,,,,美元http.get (& # 39; phone.json& # 39;)   ,,,,,,,.success (function  (phoneList设置),{   ,,,,,,,,,if  (phoneList.indexOf(方法(modelValue)),在=,0),{   ,,,,,,,,,,,d.reject ();   ,,,,,,,,,},{else    ,,,,,,,,,,,d.resolve ();   ,,,,,,,,,}   ,,,,,,,});   ,,,,,,,return  d.promise;   ,,,,,}   ,,,}   ,,}   })   .directive(& # 39;用户名# 39;,,function  (q,美元,美元http), {   return {才能   ,,,要求:,& # 39;ngModel& # 39;   ,,,链接:,function (范围、时间避署,大敌;;attrs, ctrl), {   ,,,,,ctrl validators.username 美元;=,function  (modelValue, viewValue), {   ,,,,,,,if  (modelValue), {   ,,,,,,,,,return  modelValue.length 祝辞,5,?,true :,假;   ,,,,,,,};   ,,,,,,,return 假;   ,,,,,}   ,,,}   ,,}   })

电话。json

(   13758262732,才能   15658898520,才能   13628389818,才能   18976176895,才能   ,,13518077986   )

效果

使用AngularJS怎么实现自定义表单验证功能

下面一个完整的用户注册的表单验证:html:

& lt; form  name=皉egister_form", novalidate>   ,,,& lt; div 类=癴orm-group"比;   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用AngularJS怎么实现自定义表单验证功能