angular 基于ng-messages的表单验证实例


Posted in Javascript onMay 04, 2017

最近在学习angular,那么今天也算个学习笔记吧!

html

<div class="form-group" ng-class="{'has-error': myForm.myName.$touched && myForm.myName.$invalid}">
  <label class="col-xs-2 control-label">name</label>
  <div class="col-xs-6">
    <input type="text" class="form-control" name="myName" ng-model="formData.username"
        placeholder="2-10个中英文字符,aaa会重名,必填"
        name-check minlength="2" maxlength="10" required>
  </div>
  <div class="col-xs-4 form-control-static text-danger" ng-messages="myForm.myName.$error"
           ng-messages-include="demos/form/error.html" ng-show="myForm.myName.$touched">
  </div>
</div>

ng-messages="myForm.myName.$error" 给出错误类型(required, char, exist, minlength)

error.html

<span ng-message="required">必填</span>
<span ng-message="char">非法字符</span>
<span ng-message="exist">名称已存在</span>
<span ng-message="minlength">太短了</span>

directive name-check 利用ngModel 的$validators,& $asyncValidators 添加自定义验证

app.directive('nameCheck', nameCheck);

nameCheck.$inject = ['HttpService', '$q'];

function nameCheck(HttpService, $q){

  var NAME_REG = /^[a-zA-Z\u4e00-\u9fa5]+$/;

  return {
    restrict: 'A',
    require: 'ngModel',
    link:function($scope,element,attrs,ctrl){

      ctrl.$validators.char = function(modelValue, viewValue) {
        var value = modelValue || viewValue;
        if(!NAME_REG.test(value)){
          return false;
        }
        return true;
      };
      ctrl.$asyncValidators.exist = function(modelValue, viewValue){
        var value = modelValue || viewValue;
        var deferred = $q.defer();
        HttpService.get('api/users/' + value).then(function(res) {
          if(res.isExist){
            deferred.reject(false);

          }
          deferred.resolve(true);
        })

        return deferred.promise;
      }
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 获取用户客户端操作系统版本
Aug 25 Javascript
JavaScript Event学习第七章 事件属性
Feb 07 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
Jan 06 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
Jun 27 Javascript
JQuery操作单选按钮以及复选按钮示例
Sep 23 Javascript
JS+CSS实现的经典tab选项卡效果代码
Sep 16 Javascript
基于javascript 显式转换与隐式转换(详解)
Dec 15 Javascript
深入浅析Vue.js中 computed和methods不同机制
Mar 22 Javascript
详解Puppeteer前端自动化测试实践
Feb 21 Javascript
JS实现动态添加外部js、css到head标签的方法
Jun 05 Javascript
vue prop属性传值与传引用示例
Nov 13 Javascript
javascript的hashCode函数实现代码小结
Aug 11 Javascript
JS实现标签页切换效果
May 04 #Javascript
ES6下React组件的写法示例代码
May 04 #Javascript
JS触摸事件、手势事件详解
May 04 #Javascript
详解Angular 4.x Injector
May 04 #Javascript
详解Vue中使用v-for语句抛出错误的解决方案
May 04 #Javascript
详解Node.js串行化流程控制
May 04 #Javascript
纯原生js实现贪吃蛇游戏
Apr 16 #Javascript
You might like
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
php异常处理捕获错误整理
2019/09/23 PHP
javascript 异常处理使用总结
2009/06/21 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
jQuery自定义添加&quot;$&quot;与解决&quot;$&quot;冲突的方法
2015/01/19 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
基于node实现websocket协议
2016/04/25 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
在vue里面设置全局变量或数据的方法
2018/03/09 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
JavaScript中的全局属性与方法深入解析
2020/06/14 Javascript
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
python分割和拼接字符串
2013/11/01 Python
Python Requests 基础入门
2016/04/07 Python
浅谈Python处理PDF的方法
2017/11/10 Python
python中的随机函数小结
2018/01/27 Python
python xpath获取页面注释的方法
2019/01/14 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
教师评优的个人自我评价分享
2013/09/19 职场文书
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
车队司机自我鉴定
2014/03/02 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
中班上学期个人总结
2015/02/12 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
vue项目多环境配置(.env)的实现
2021/07/21 Vue.js