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加强之自定义callback示例
Sep 21 Javascript
各种页面定时跳转(倒计时跳转)代码总结
Oct 24 Javascript
jQuery实现div浮动层跟随页面滚动效果
Feb 11 Javascript
js分页工具实例
Jan 28 Javascript
JavaScript 动态加载脚本和样式的方法
Apr 13 Javascript
js跨域资源共享 基础篇
Jul 02 Javascript
webpack入门+react环境配置
Feb 08 Javascript
Bootstrap进度条实现代码解析
Mar 07 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
Aug 12 Javascript
prototype.js简单实现ajax功能示例
Oct 18 Javascript
Vue中android4.4不兼容问题的解决方法
Sep 04 Javascript
原生小程序封装跑马灯效果
Oct 21 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脚本加密专家php解密算法
2020/09/13 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
PHP编写RESTful接口
2016/02/23 PHP
JavaScript实现多维数组的方法
2013/11/20 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
JavaScript如何自定义trim方法
2015/07/28 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
python安装pywin32clipboard的操作方法
2019/01/24 Python
Python类的继承用法示例
2019/01/31 Python
详解Python读取yaml文件多层菜单
2019/03/23 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
简单了解python列表和元组的区别
2020/05/14 Python
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
测绘工程个人的自我评价
2013/11/10 职场文书
哈理工毕业生的求职信
2013/12/22 职场文书
员工工作表扬信范文
2014/01/13 职场文书
2014植树节活动总结
2014/03/11 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
导游词之白茶谷九龙峡
2019/10/23 职场文书