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 相关文章推荐
懒就要懒到底——鼠标自动点击(含时间判断)
Feb 20 Javascript
基于jQuery UI CSS Framework开发Widget的经验
Aug 21 Javascript
js函数内变量的作用域分析
Jan 12 Javascript
jQuery选择器用法实例详解
Dec 17 Javascript
JSONObject使用方法详解
Dec 17 Javascript
jquery实现输入框实时输入触发事件代码
Dec 21 Javascript
JavaScript标准对象_动力节点Java学院整理
Jun 27 Javascript
Vue学习笔记进阶篇之过渡状态详解
Jul 14 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
Sep 10 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
Sep 16 Javascript
vue 导航内容设置选中状态样式的例子
Nov 01 Javascript
node中短信api实现验证码登录的示例代码
Jan 20 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
多重?l件?合查?(二)
2006/10/09 PHP
浅谈php中mysql与mysqli的区别分析
2013/06/10 PHP
php调用C代码的实现方法
2014/03/11 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
Vue基本使用之对象提供的属性功能
2019/04/30 Javascript
Python队列的定义与使用方法示例
2017/06/24 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
儿童编程python入门
2018/05/08 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
Python实现不规则图形填充的思路
2020/02/02 Python
python输入中文的实例方法
2020/09/14 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
毕业生自荐信如何写
2014/03/24 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
假面舞会策划方案
2014/05/29 职场文书
中标通知书格式
2015/04/17 职场文书
自我检讨书怎么写
2015/05/07 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
运动会跳远广播稿
2015/08/19 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
《开国大典》教学反思
2016/02/16 职场文书
Python编程源码报错解决方法总结经验分享
2021/10/05 Python