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 相关文章推荐
js Form.elements[i]的使用实例
Nov 13 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
Jan 03 Javascript
使用jQuery.fn自定义jQuery翻页插件
Jan 20 Javascript
用javascript为页面添加天气显示实现思路及代码
Dec 02 Javascript
jQuery实现可拖拽3D万花筒旋转特效
Jan 03 Javascript
微信小程序的动画效果详解
Jan 18 Javascript
Angular4开发解决跨域问题详解
Aug 28 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
Nov 21 Javascript
js实现HTML中Select二级联动的实例
Jan 05 Javascript
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
在Vue项目中,防止页面被缩放和放大示例
Oct 28 Javascript
element-ui中el-upload多文件一次性上传的实现
Dec 02 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中time(),date(),mktime()区别介绍
2013/09/28 PHP
php下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
2019/01/10 PHP
goto语法在PHP中的使用教程
2020/09/17 PHP
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
2017/08/16 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
vue监听键盘事件的相关总结
2021/01/29 Vue.js
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python重试装饰器示例
2014/02/11 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
python回调函数用法实例分析
2015/05/09 Python
python处理xml文件的方法小结
2017/05/02 Python
关于反爬虫的一些简单总结
2017/12/13 Python
用python生成1000个txt文件的方法
2018/10/25 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
Python中如何添加自定义模块
2020/06/09 Python
Django websocket原理及功能实现代码
2020/11/14 Python
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
EJB timer的种类
2014/10/28 面试题
小学教师寄语大全
2014/04/03 职场文书
升职感谢信
2015/01/22 职场文书
2016年寒假见闻
2015/10/10 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
如何写好一份优秀的工作总结?
2019/06/21 职场文书