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 操作文件 实现方法小结
Jul 02 Javascript
jquery mobile changepage的三种传参方法介绍
Sep 13 Javascript
jquery.ui.draggable中文文档(原文翻译)
Nov 15 Javascript
javascript之Array 数组对象详解
Jun 07 Javascript
Node.js中路径处理模块path详解
Nov 14 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
Jul 13 Javascript
JavaScript实现三级联动菜单效果
Aug 16 Javascript
element-ui upload组件多文件上传的示例代码
Oct 17 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
Dec 13 Javascript
JavaScript链式调用实例浅析
Dec 19 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
Dec 04 Javascript
使用Vue实现简单计算器
Feb 25 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下intval()和(int)转换使用与区别
2008/07/18 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
2016/08/28 PHP
jQuery中的常用事件总结
2009/12/27 Javascript
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
python 获取本机ip地址的两个方法
2013/02/25 Python
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
django中嵌套的try-except实例
2020/05/21 Python
如何查看python关键字
2021/01/17 Python
精灵市场:Pixie Market
2019/06/18 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
土木工程师岗位职责
2013/11/24 职场文书
违反课堂纪律检讨书
2014/01/19 职场文书
《黄山奇石》教学反思
2014/04/19 职场文书
学习经验演讲稿
2014/05/10 职场文书
机关副主任个人四风问题整改措施
2014/09/26 职场文书
中学生旷课检讨书模板
2014/10/08 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
PHP设计模式(观察者模式)
2021/07/07 PHP
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python