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高级程序设计(第3版)学习笔记8 js函数(中)
Oct 11 Javascript
js css后面所带参数含义介绍
Aug 18 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
May 07 Javascript
JavaScript的this关键字的理解
Jun 18 Javascript
jquery validation验证表单插件
Jan 07 Javascript
详解VueJs异步动态加载块
Mar 09 Javascript
VueJs监听window.resize方法示例
Jan 17 Javascript
Vue 莹石摄像头直播视频实例代码
Aug 31 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
May 22 Javascript
Elasticsearch实现复合查询高亮结果功能
Sep 10 Javascript
webpack 最佳配置指北(推荐)
Jan 07 Javascript
JS实现简易贪吃蛇游戏
Aug 24 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 stream_context_create()作用和用法分析
2011/03/29 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
Jquery常用技巧收集整理篇
2010/11/14 Javascript
raphael.js绘制中国地图 地图绘制方法
2014/02/12 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
javascript父、子页面交互技巧总结
2014/08/08 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
javascript实现淘宝幻灯片广告展示效果
2015/04/27 Javascript
javascript中 try catch用法
2015/08/16 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
vue 中swiper的使用教程
2018/05/22 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
Python map及filter函数使用方法解析
2020/08/06 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书
sql中mod()函数取余数的用法
2021/05/29 SQL Server
Python 多线程处理任务实例
2021/11/07 Python
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技
教你如何用cmd快速登录服务器
2022/06/10 Servers