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获取iframe的document对象的方法
Oct 10 Javascript
js获得当前系统日期时间的方法
May 06 Javascript
Bootstrap插件全集
Jul 18 Javascript
JavaScript ES6中const、let与var的对比详解
Jun 18 Javascript
深入理解Vue transition源码分析
Jul 30 Javascript
JavaScript与Java正则表达式写法的区别介绍
Aug 15 Javascript
jQuery中元素选择器(element)简单用法示例
May 14 jQuery
vue2.0的虚拟DOM渲染思路分析
Aug 09 Javascript
jquery将json转为数据字典的实例代码
Oct 11 jQuery
vue之a-table中实现清空选中的数据
Nov 07 Javascript
uniapp实现横向滚动选择日期
Oct 21 Javascript
JavaScript中遍历的十种方法总结
Dec 15 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 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
mysql数据库差异比较的PHP代码
2012/02/05 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
js压缩利器
2007/02/20 Javascript
JavaScript的parseInt 进制问题
2009/05/07 Javascript
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
javascript父子页面通讯实例详解
2015/07/17 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
一文了解Vue中的nextTick
2019/05/06 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
js实现滑动滑块验证登录
2020/07/24 Javascript
微信小程序实现页面左右滑动
2020/11/16 Javascript
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
python实现抽奖小程序
2020/04/15 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
《分数的意义》教学反思
2016/02/20 职场文书
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL