Angular自定义指令实现一般性的表单验证
2016-11-24 16:04
555 查看
指令的生命周期
inject阶段directive将指令注入使得HTML模板可以使用;
complie和link
.directive('myDirective',function(){ return{ compile:function(tEle,tAttrs,transcludeFn){ //被实例化时执行一次,无法访问指令的$scope,可操作原始的DOM节点,编译完成返回link对象 return { pre: function(scope, iElem, iAttrs){ console.log(name + ': pre link => '+iElem.html()); }, post: function(scope, iElem, iAttrs){ console.log(name + ': post link => ' + iElem.html()); } } } });
link中的pre-link和post-link大概理解成link之前和link之后,link之后表明了DOM结构稳定了,可以对子DOM进行一系列的操作,而pre-link不适合我们去添加设计子节点的行为。
可参考这本书AngularJS深度剖析与最佳实践
自定义指令的实现
定义指令名ngChange;restrict指明指令的应用方式
1. E-元素;
2. A-属性;
3. C-类;
4. M-注释;
link:这里的link指的是post-link;
.directive("ngChange",function(){ return { restrict:"A", link: function (scope, iElement, iAttrs,ngController) { var ele=iElement[0].nextElementSibling; var valid=true; scope.$watch(iAttrs.ngModel, function (newVal,oldVal) { if(newVal==undefined){ valid=false; return; } if(newVal==""){ valid=false; ele.innerHTML="输入框不能为空"; return; } if(Number(newVal)>20||Number(newVal)<0){ valid=false; ele.innerHTML="输入必须大于0且小于20"; return; }else if(newVal.indexOf(".")==-1){ valid=true; return; } var reg=/[\d]{1,2}\.[\d]{2}/; if(!reg.test(newVal)){ iElement[0].value=newVal.slice(0,5); valid=false; ele.innerHTML="输入只能为两位小数"; return; } ele.innerHTML=""; }); iElement[0].onblur=function(){ if(!valid){ return; } ele.innerHTML=""; var reg=/[\d]{1,2}/; if(reg.test(this.value)){ this.value=this.value+".00"; } }; } });
view使用:
<label for="validnum">数字有效性验证</label><input type="text" name="validnum" ng-model="validnum" maxlength="5" ngChange><span></span>
可达到的效果:
对于验证规则相同的表单不区分表单中的ng-model,对表单进行验证。这也是将验证写成指令形式的目的。
相关文章推荐
- Angular2.js实现表单验证详解
- angular表单验证及 提交功能实现
- angularjs 表单密码验证自定义指令实现代码
- Angular实现表单验证功能
- angular实现表单验证及提交功能
- AngularJS中实现用户访问的身份认证和表单验证功能
- jquery validate和jquery form 插件组合实现验证表单后AJAX提交
- form的onsubmit事件--表单提交前的验证最佳实现方式
- vue动态绑定组件子父组件多表单验证功能的实现代码
- 转 ASP.NET基于表单的验证实现网上安全访问,管理(2)
- 纯CSS3实现不错的表单验证效果
- MOSS2007中实现表单验证
- struts2表单验证初步及国际化实现(学习总结)
- 纯CSS3实现不错的表单验证效果
- Angular表单验证
- jQuery中验证表单提交方式及序列化表单内容的实现
- 基于PHP+Ajax实现表单验证的详解
- ASP.NET 表单验证实现浅析
- Angular使用ng-messages与PHP进行表单数据验证
- 通过正则表达式实现表单验证是否为中文