AngularJs验证重复密码的方法(两种)


Posted in Javascript onNovember 25, 2016

本文给大家分享angularjs验证重复密码的两种方法。具体方法详情如下所示:

第一种:

<label for="password">密码</label>
<input id="password" name="password" type="password" ng-model="user.password" required>
<label for="repassword">重复密码</label>
<input id="repassword" name="repassword" type="password" ng-model="repassword" required>
<span style="color:red" ng-show="user.password!=repassword">两次密码不一致</span>
<input type="submit" class="btn btn-primary btn-lg" value="SAVE" ng-disabled="submit(userForm)"/>
/*JS*/
app.controller("main",function($scope){
$scope.submit=function(ngFormController){
return ngFormController.$invalid; /*valid的取反*/
};
});

这种是单纯的判断两个ng-model所在的值是否相等,不等则显示出被ng-show指令控制的信息,等则隐藏。

但这种办法虽然很简单,但是却有个我认为比较严重的缺陷:这个“密码不一致”并没有影响到ngFormController的内部。也就是说,即使它两次密码不正确,最后的提交按钮还是可以点击的,因为ngFormController的$invalid 并没有认为两次密码不正确是一种错误。

参考一下AngularJS的指令ng-maxlength等,他们却可以引起$invalid 的检测,所以要解决上面的问题,我觉得办法之一就是创建一个用于验证两次密码是否一致的自定义指令。

/*指令创建*/
app.directive('equals',function(){
return{
require:'ngModel',
link:function(scope,elm,attrs,ngModelCtrl){
function validateEqual(myValue){
var valid = (myValue === scope.$eval(attrs.equals));
ngModelCtrl.$setValidity('equal',valid);
return valid ? myValue : undefined;
}
ngModelCtrl.$parsers.push(validateEqual);
ngModelCtrl.$formatters.push(validateEqual);
scope.$watch(attrs.equals,function(){
ngModelCtrl.$setViewValue(ngModelCtrl.$viewValue);
})
}
}
});
<!--html-->
<label for="password">密码</label>
<input id="password" name="password" type="password" ng-model="user.password" required>
<label for="repassword">重复密码</label>
<input id="repassword" name="repassword" type="password" ng-model="repassword" <!--注意这里将要使用我自定义的指令-->equals="user.password" required>
<span style="color:red" ng-show="user.password!=repassword">两次密码不一致</span>
<input type="submit" class="btn btn-primary btn-lg" value="SAVE" ng-disabled="submit(userForm)"/>

这样,加上第一个办法的判断,就可以完美地验证重复密码了。

以上所述是小编给大家介绍的AngularJs验证重复密码的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
很可爱的输入框
Aug 03 Javascript
jQuery知识点整理
Jan 30 Javascript
Javascript中this关键字的一些小知识
Mar 15 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
Apr 30 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
Jul 05 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
Apr 25 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
Jul 28 Javascript
使用webpack打包koa2 框架app
Feb 02 Javascript
Vue组件创建和传值的方法
Aug 17 Javascript
JS实现换肤功能的方法实例详解
Jan 30 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 Javascript
关于antd tree 和父子组件之间的传值问题(react 总结)
Jun 02 Javascript
jQuery实现发送验证码并60秒倒计时功能
Nov 25 #Javascript
js document.getElementsByClassName的使用介绍与自定义函数
Nov 25 #Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
Nov 25 #Javascript
JS实现的图片预览插件与用法示例【不上传图片】
Nov 25 #Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
Nov 25 #Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
Nov 25 #Javascript
bootstrap-datetimepicker实现只显示到日期的方法
Nov 25 #Javascript
You might like
关于手调机和数调机的选择
2021/03/02 无线电
php中try catch捕获异常实例详解
2014/11/21 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
Javascript变量函数浅析
2011/09/02 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
vue-cli脚手架-bulid下的配置文件
2018/03/27 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
澳大利亚的奢侈品牌:Oroton
2016/08/26 全球购物
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
房屋出租协议书
2014/04/10 职场文书
查摆问题自查报告范文
2014/10/13 职场文书
小学运动会开幕词
2016/03/04 职场文书
nginx部署多前端项目的几种方法
2021/05/25 Servers
Python OpenGL基本配置方式
2022/05/20 Python