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数组定义方法
Sep 10 Javascript
jQuery实现Tab选项卡切换效果简单演示
Nov 23 Javascript
Bootstrap Paginator分页插件使用方法详解
May 30 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
Oct 19 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
Jul 21 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
Aug 23 Javascript
基于javascript 显式转换与隐式转换(详解)
Dec 15 Javascript
浅谈Vue Element中Select下拉框选取值的问题
Mar 01 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
Mar 25 Javascript
Vue实现拖放排序功能的实例代码
Jul 08 Javascript
微信小程序使用车牌号输入法的示例代码
Aug 20 Javascript
Vue实现简单的留言板
Oct 23 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生成二维码的几种方式整理及使用实例
2013/06/03 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
解决Vue @submit 提交后不刷新页面问题
2020/07/18 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
Python简易版停车管理系统
2019/08/12 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
大学生学习生活的自我评价
2013/11/01 职场文书
实习报告评语
2014/04/26 职场文书
法院授权委托书范文
2014/08/02 职场文书
新教师个人总结
2015/02/06 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书
实习证明模板
2015/06/16 职场文书
初一年级组工作总结
2015/08/12 职场文书
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL