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 相关文章推荐
通过Unicode转义序列来加密,按你说的可以算是混淆吧
May 06 Javascript
解决jquery插件冲突的问题
Jan 23 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
Oct 26 Javascript
将JSON字符串转换成Map对象的方法
Nov 30 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
Feb 27 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
Apr 18 jQuery
layui中使用jquery控制radio选中事件的示例代码
Aug 15 jQuery
深入理解Vue.js轻量高效的前端组件化方案
Dec 10 Javascript
一文搞懂ES6中的Map和Set
May 20 Javascript
详解vue-router的Import异步加载模块问题的解决方案
May 13 Javascript
Element Card 卡片的具体使用
Jul 26 Javascript
基于ant design日期控件使用_仅月份的操作
Oct 27 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一维二维数组键排序方法实例总结
2014/11/13 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
JS模拟多线程
2007/02/07 Javascript
javascript第一课
2007/02/27 Javascript
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
three.js实现圆柱体
2018/12/30 Javascript
layui添加动态菜单与选项卡
2019/07/26 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
python妙用之编码的转换详解
2017/04/21 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
python使用递归的方式建立二叉树
2019/07/03 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
Python根据字符串调用函数过程解析
2020/11/05 Python
pandas 按日期范围筛选数据的实现
2021/02/20 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
聚美优品广告词改编
2014/03/14 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
婚姻出轨保证书
2015/05/08 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android
Python中Selenium对Cookie的操作方法
2021/07/09 Python
Python常遇到的错误和异常
2021/11/02 Python