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 相关文章推荐
JObj预览一个JS的框架
Mar 13 Javascript
jQuery实现多按钮单击变色
Nov 27 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
Oct 14 Javascript
JS模拟Dialog弹出浮动框效果代码
Oct 16 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
Sep 27 Javascript
Node.js中常规的文件操作总结
Oct 13 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
Dec 19 Javascript
bootstrap与pagehelper实现分页效果
Dec 29 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
Jan 20 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 Javascript
Vue实现手机计算器
Aug 17 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防注入安全代码
2008/04/09 PHP
PHP 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
js 高效去除数组重复元素示例代码
2013/12/19 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
canvas时钟效果
2017/02/16 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
2019/05/21 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
python 实现文件的递归拷贝实现代码
2012/08/02 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
Python中pip更新和三方插件安装说明
2018/07/08 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
PHP开发工程师面试问题集锦
2012/11/01 面试题
安全员岗位职责
2013/11/11 职场文书
亮化工程实施方案
2014/03/17 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
幼师个人总结范文
2015/02/28 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL