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 相关文章推荐
关于图片验证码设计的思考
Jan 29 Javascript
Grid得到选择行数据的方法总结
Jan 17 Javascript
关于js里的this关键字的理解
Aug 17 Javascript
Bootstrap使用基础教程详解
Sep 05 Javascript
vue.js实例todoList项目
Jul 07 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
Sep 21 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
May 15 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
Apr 23 Javascript
vue element中axios下载文件(后端Python)
May 10 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
May 14 Javascript
Javascript表单序列化原理及实现代码详解
Oct 30 Javascript
html中两种获取标签内的值的方法
Jun 16 jQuery
微信小程序之获取当前位置经纬度以及地图显示详解
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生成EXCEL的东东
2006/10/09 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
PHP学习笔记之session
2018/05/06 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
原生JS实现自定义滚动条效果
2020/10/27 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
利用aardio给python编写图形界面
2017/08/21 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
详解Python3 pickle模块用法
2019/09/16 Python
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
党支部公开承诺践诺书
2014/03/28 职场文书
就职演讲稿范文
2014/05/19 职场文书
质量月活动总结
2014/08/26 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
HTML基础详解(上)
2021/10/16 HTML / CSS