Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)


Posted in Javascript onMay 09, 2017

AngularJS提供了表单验证,但是验证的过程交互体验很不好,比如重设密码,重复密码的时候一键入就会提示密码不正确,现整理了两种方法,仅供借鉴。

一,点击提交验证

<form action="" class="form-horizontal col-md-9" name="reset_pwd" ng-submit="resetPwd()">
  <div class="form-group">
    <label class="col-sm-2 control-label">密码</label>
    <div class="col-sm-8">
      <input type="password" name="mycompwd" class="form-control" ng-model="mycompwd" placeholder="请输入密码">
    </div>
  </div>
  <div class="form-group">
    <label class="col-sm-2 control-label">重复密码</label>
    <div class="col-sm-8">
      <input type="password" name="resetmycompwd" class="form-control" ng-model="resetmycompwd" placeholder="再次输入密码" required>
    </div>
    <span style="color:red" ng-show="mycompwd!=resetmycompwd && reset_pwd.resetmycompwd.$dirty && reset_pwd.submitted
    ">密码不一致</span>
  </div>
  <div class="form-group">
    <button type="submit" class="btn btn-primary" >确认</button>
    <button type="button" class="btn btn-default" ng-click="resetpwd_cancle()">取消</button>
  </div>
</form>

当用户试图提交表单时,你可以在作用域中捕获到一个submitted值,然后对表单内容进行验证并显示错误信息。

JS代码

$scope.submitted = false;
$scope.resetPwd = function(){
  console.log(666);
  if($scope.reset_pwd.$valid && $scope.mycompwd == $scope.resetmycompwd){
    console.log('重置成功,进行其他操作');
  }else{
    $scope.reset_pwd.submitted = true;
  }
}

亲测可用。

第二种失去焦点验证

<form action="" class="form-horizontal col-md-9" name="reset_pwd" ng-submit="resetPwd()">
  <div class="form-group">
    <label class="col-sm-2 control-label">密  码</label>
    <div class="col-sm-8">
      <input type="password" name="mycompwd" class="form-control" ng-model="mycompwd" placeholder="请输入密码">
    </div>
  </div>
  <div class="form-group">
    <label class="col-sm-2 control-label">重复密码</label>
    <div class="col-sm-8">
      <input ng-focus type="password" name="resetmycompwd" class="form-control" ng-model="resetmycompwd" placeholder="再次输入密码" required>
    </div>
    <span style="color:red" ng-show="mycompwd!=resetmycompwd && reset_pwd.resetmycompwd.$dirty
      && !reset_pwd.resetmycompwd.$focused
    ">密码不一致</span>
  </div>
  <div class="form-group">
    <button type="submit" class="btn btn-primary" >确认</button>
    <button type="button" class="btn btn-default" ng-click="resetpwd_cancle()">取消</button>
  </div>
</form>

JS代码

app.directive('ngFocus',[function(){
  var focusClass = 'ng-focused';
  return{
    restrict:'AE',
    require:'ngModel',
    link:function(scope,element,attrs,ctrl){
      ctrl.$focused = false;
      element.bind('focus',function(e){
        element.addClass(focusClass);
        scope.$apply(function(){
          ctrl.$focused = true;
        });
        element.bind('blur',function(e){
          element.removeClass(focusClass);
          scope.$apply(function(){
            ctrl.$focused = false;
          });
        });
      })
    }
  };
}]);

注意HTML标红的地方。正是区分两种方法的关键。

以上所述是小编给大家介绍的Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript中日期转换成时间戳的小例子
Mar 21 Javascript
javascript如何动态加载表格与动态添加表格行
Nov 27 Javascript
javascript中apply和call方法的作用及区别说明
Feb 14 Javascript
JavaScript数据结构与算法之栈与队列
Jan 29 Javascript
JavaScript制作颜色反转小游戏
Sep 25 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
Dec 12 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
Aug 16 Javascript
jquery ajax异步提交表单数据的方法
Oct 27 jQuery
SVG实现时钟效果
Jul 17 Javascript
JS集合set类的实现与使用方法示例
Feb 01 Javascript
vue-cli3中vue.config.js配置教程详解
May 29 Javascript
如何优化vue打包文件过大
Apr 13 Vue.js
微信小程序之获取当前位置经纬度以及地图显示详解
May 09 #Javascript
JS中的数组转变成JSON格式字符串的方法
May 09 #Javascript
jQuery插件开发发送短信倒计时功能代码
May 09 #jQuery
JavaScrpt的面向对象全面解析
May 09 #Javascript
ES6正则表达式的一些新功能总结
May 09 #Javascript
Vuex和前端缓存的整合策略详解
May 09 #Javascript
基于JS实现限时抢购倒计时间表代码
May 09 #Javascript
You might like
一个ORACLE分页程序,挺实用的.
2006/10/09 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
php技巧小结【推荐】
2017/01/19 PHP
Ucren Virtual Desktop V2.0
2006/11/07 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
canvas时钟效果
2017/02/16 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
了解重排与重绘
2019/05/29 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
python类和继承用法实例
2015/07/07 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
日语专业推荐信
2013/11/12 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
感恩节红领巾广播稿
2014/02/11 职场文书
教师求职自荐书
2014/06/14 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
开天辟地观后感
2015/06/09 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP