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 相关文章推荐
jQuery autocomplate 自扩展插件、自动完成示例代码
Mar 28 Javascript
jQuery控制TR显示隐藏的几种方法
Jun 18 Javascript
javascript数组输出的两种方式
Jan 13 Javascript
Javascript基础教程之比较null和undefined值
May 16 Javascript
JavaScript 实现的checkbox经典实例分享
Oct 16 Javascript
Angular 表单控件示例代码
Jun 26 Javascript
JavaScript创建对象_动力节点Java学院整理
Jun 27 Javascript
JavaScript中各数制转换全面总结
Aug 21 Javascript
React通过父组件传递类名给子组件的实现方法
Nov 13 Javascript
webpack4+react多页面架构的实现
Oct 25 Javascript
详解原生JS回到顶部
Mar 25 Javascript
JavaScript实现显示和隐藏图片
Apr 29 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
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
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
javascript Excel操作知识点
2009/04/24 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
2014/06/11 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
js数组的基本操作(很全自己整理的)
2014/10/16 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
ES6中数组array新增方法实例总结
2017/11/07 Javascript
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
让Python代码更快运行的5种方法
2015/06/21 Python
使用python实现knn算法
2017/12/20 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
python中的字符串内部换行方法
2018/07/19 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
西班牙在线药店:DosFarma
2020/03/28 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
自荐信的五个重要部分
2013/10/29 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
宣传稿格式范文
2015/07/23 职场文书