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 相关文章推荐
ExtJS 2.0实用简明教程 之ExtJS版的Hello
Apr 29 Javascript
JavaScript网页定位详解
Jan 13 Javascript
js使用for循环及if语句判断多个一样的name
Sep 09 Javascript
JavaScript数据结构与算法之栈详解
Mar 12 Javascript
Vue实现自带的过滤器实例
Mar 09 Javascript
Angular中使用better-scroll插件的方法
Mar 27 Javascript
vue项目base64字符串转图片的实现代码
Jul 13 Javascript
Vue.js 中的 v-cloak 指令及使用详解
Nov 19 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
Apr 16 Javascript
微信小程序后台持续定位功能使用详解
Aug 23 Javascript
JS实现导航栏楼层特效
Jan 01 Javascript
webpack打包优化的几个方法总结
Feb 10 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
用 PHP5 轻松解析 XML
2006/12/04 PHP
php.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
php上传文件问题汇总
2015/01/30 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
javascript 操作符(~、&amp;、|、^、)使用案例
2014/12/31 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
js实现旋转木马效果
2017/03/17 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
python+selenium小米商城红米K40手机自动抢购的示例代码
2021/03/24 Python
自主招生自荐信
2013/12/08 职场文书
安全生产实施方案
2014/02/23 职场文书
公司聘任书模板
2014/03/29 职场文书
2014年司机工作总结
2014/11/21 职场文书
初中优秀学生评语
2014/12/29 职场文书
邀请函范文
2015/02/02 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python