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 文本框使用小结
May 22 Javascript
jquery ajax abort()的使用方法
Oct 28 Javascript
window.open的页面如何刷新(父页面)上层页面
Dec 28 Javascript
60个很实用的jQuery代码开发技巧收集
Dec 15 Javascript
浅谈jquery回调函数callback的使用
Jan 30 Javascript
jquery实现图片左右切换的方法
May 07 Javascript
Jquery zTree 树控件异步加载操作
Feb 25 Javascript
Bootstrap CSS布局之代码
Dec 17 Javascript
js实现多个倒计时并行 js拼团倒计时
Feb 25 Javascript
layer.alert自定义关闭回调事件的方法
Sep 27 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
Sep 01 Javascript
vue中使用mockjs配置和使用方式
Apr 06 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
PHP编程中八种常见的文件操作方式
2006/11/19 PHP
php页面防重复提交方法总结
2013/11/25 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
2014/01/31 PHP
php调用c接口无错版介绍
2014/03/11 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
jquery $.ajax入门应用一
2008/11/19 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
2013/06/08 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
2014/05/08 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
js基础之DOM中元素对象的属性方法详解
2016/10/28 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
js实现图片实时时钟
2020/01/15 Javascript
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
服务生自我鉴定
2014/01/22 职场文书
写好自荐信需做到的5要点
2014/03/07 职场文书
工作岗位说明书模板
2014/05/09 职场文书
应届生求职信范文
2014/05/26 职场文书
机械专业技术员求职信
2014/06/14 职场文书
真诚的求职信
2014/07/04 职场文书
导游词之青城山景区
2019/09/27 职场文书