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 相关文章推荐
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
Aug 15 Javascript
JavaScript flash复制库类 Zero Clipboard
Jan 17 Javascript
深入理解javascript动态插入技术
Nov 12 Javascript
JavaScript重载函数实例剖析
May 13 Javascript
Bootstrap模态框调用功能实现方法
Sep 19 Javascript
js 模仿锚点定位的实现方法
Nov 19 Javascript
javascript中json对象json数组json字符串互转及取值方法
Apr 19 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
Jul 03 Javascript
jQuery三组基本动画与自定义动画操作实例总结
May 09 jQuery
详解Vue.js 响应接口
Jul 04 Javascript
Vue实现返回顶部按钮实例代码
Oct 21 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
Nov 05 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
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
vue实现简单图片上传
2020/06/30 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
python中json格式数据输出的简单实现方法
2016/10/31 Python
python 根据pid杀死相应进程的方法
2017/01/16 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
tensorflow学习笔记之mnist的卷积神经网络实例
2018/04/15 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
五年后的职业生涯规划
2014/03/04 职场文书
留守儿童工作方案
2014/06/02 职场文书
感恩节寄语2015
2015/03/24 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers