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 设置标题的自动翻转
Oct 03 Javascript
javascript dom 基本操作小结
Apr 11 Javascript
容易被忽略的JS脚本特性
Sep 13 Javascript
JQuery中clone方法复制节点
May 18 Javascript
jquery mobile界面数据刷新的实现方法
May 28 Javascript
jQuery实现图片轮播效果代码
Sep 27 Javascript
jQuery EasyUi 验证功能实例解析
Jan 06 Javascript
js实现类bootstrap模态框动画
Feb 07 Javascript
node thread.sleep实现示例
Jun 20 Javascript
彻底弄懂 JavaScript 执行机制
Oct 23 Javascript
Vue 中的受控与非受控组件的实现
Dec 17 Javascript
NestJs使用Mongoose对MongoDB操作的方法
Feb 22 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文件缓存类示例分享
2015/01/30 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
jquery form 隐藏的input 选择
2014/04/29 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
Python实现八皇后问题示例代码
2018/12/09 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
JAVA软件工程师测试题
2014/07/25 面试题
大学毕业生自荐书怎么写?
2014/01/06 职场文书
百日安全活动总结
2014/05/04 职场文书
招标保密承诺书
2015/01/20 职场文书
西安大雁塔导游词
2015/02/10 职场文书
污水处理保证书
2015/05/09 职场文书
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库