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 相关文章推荐
javascript setTimeout和setInterval 的区别
Dec 08 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
May 14 Javascript
extjs render 用法介绍
Sep 11 Javascript
javascript中创建对象的几种方法总结
Nov 01 Javascript
jquery高级编程的最佳实践详解
Mar 23 Javascript
jQuery中append()方法用法实例
Jan 08 Javascript
基于input框覆盖掉数字英文的实例讲解
Jul 21 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
Mar 21 Javascript
js实现坦克移动小游戏
Oct 28 Javascript
使用Bootstrap做一个朝代历史表
Dec 10 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
Dec 25 Javascript
Vue ​v-model相关知识总结
Jan 28 Vue.js
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
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
限制文本框输入N个字符的js代码
2010/05/13 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
Seajs的学习笔记
2014/03/04 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
微信小程序 使用picker封装省市区三级联动实例代码
2016/10/28 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
python 正则式使用心得
2009/05/07 Python
介绍Python中的一些高级编程技巧
2015/04/02 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
python让列表倒序输出的实例
2018/06/25 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
Python如何给你的程序做性能测试
2020/07/29 Python
python使用列表的最佳方案
2020/08/12 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
C语言中break与continue的区别
2012/07/12 面试题
电教室标语
2014/06/20 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
送给小学生的暑假礼物!小学生必背99首古诗
2019/07/02 职场文书