angularjs 表单密码验证自定义指令实现代码


Posted in Javascript onOctober 27, 2016

html代码

<form name="form">
    <input type="password" name="password" ng-model="password" required placeholder="请输入密码">
    <input type="password" name="passwordConfirm" ng-model="passwordConfirm" equal-to="password" placeholder="请再次输入密码">
    <span ng-show="form.passwordConfirm.$error.equalTo">两次密码不一致</span>
  </form>

js

angular.module("Valid",[])

.directive("equalTo", function () {
  return {
    require: "ngModel",
    link: function (scope, ele, attrs, ctrl) {

      console.log(scope);//打印当前作用域
      console.log(attrs);//打印当前标签属性列表
      console.log(ctrl);//打印当前ctrl

      var target = attrs["equalTo"];//获取自定义指令属性键值

      if (target) {//判断键是否存在
        scope.$watch(target, function () {//存在启动监听其值
          ctrl.$validate()//每次改变手动调用验证
        }) 

        // 获取当前模型控制器的父控制器FormController
        var targetCtrl = ctrl.$$parentForm[target];//获取指定模型控制器
        console.log(targetCtrl)

        ctrl.$validators.equalTo = function (modelValue, viewVale) {//自定义验证器内容
          
          var targetValue = targetCtrl.$viewValue;//获取password的输入值

          return targetValue == viewVale;//是否等于passwordConfirm的值
        }

        ctrl.$formatters.push(function (value) {
          console.log("正在进行数据格式化的值:",value)
          return value;
        })

        ctrl.$parsers.push(function (value) {
          console.log("正在进行数据转换的值:",value)
          return value;
        })
      }
    }
  }
})

演示地址:https://tianyouh.github.io/angularPasswordConfirm/

Javascript 相关文章推荐
基于jquery的弹出提示框始终处于窗口的居中位置(类似于alert弹出框的效果)
Sep 28 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
Dec 27 Javascript
js 获取计算后的样式写法及注意事项
Feb 25 Javascript
js实现可拖动DIV的方法
Dec 17 Javascript
教你在heroku云平台上部署Node.js应用
Jul 30 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
Dec 08 Javascript
原生js仿jquery animate动画效果
Jul 13 Javascript
老生常谈javascript中逻辑运算符&amp;&amp;和||的返回值问题
Apr 13 Javascript
JavaScript学习笔记之函数记忆
Sep 06 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
Apr 26 Javascript
详解小程序退出页面时清除定时器
Apr 28 Javascript
vue滚动插件better-scroll使用详解
Oct 18 Javascript
getElementById().innerHTML与getElementById().value的区别
Oct 27 #Javascript
不使用script导入js文件的几种方法
Oct 27 #Javascript
JSON 必知必会 观后记
Oct 27 #Javascript
使用JSON作为函数的参数的优缺点
Oct 27 #Javascript
Javascript 获取鼠标当前的位置实现方法
Oct 27 #Javascript
JavaScript实现使用Canvas绘制图形的基本教程
Oct 27 #Javascript
js 实现一些跨浏览器的事件方法详解及实例
Oct 27 #Javascript
You might like
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
对new functionName()定义一个函数的理解
2014/05/22 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
Python中操作文件之write()方法的使用教程
2015/05/25 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
微信跳一跳python代码实现
2018/01/05 Python
Python多层装饰器用法实例分析
2018/02/09 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
python随机模块random使用方法详解
2020/02/14 Python
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
会计出纳岗位职责
2013/12/25 职场文书
工程招投标邀请书
2014/01/30 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
2019年自助餐厅创业计划书模板
2019/08/22 职场文书
压缩Redis里的字符串大对象操作
2021/06/23 Redis
一条慢SQL语句引发的改造之路
2022/03/16 MySQL
python计算列表元素与乘积详情
2022/08/05 Python
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers