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 写类方式之六
Jul 05 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
Feb 03 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
Feb 03 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
Jan 16 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
Jun 18 Javascript
JavaScript动态改变div属性的实现方法
Jul 22 Javascript
AngularJS基础 ng-csp 指令详解
Aug 01 Javascript
原生JS实现图片左右轮播
Dec 30 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
Mar 14 Javascript
Avalonjs双向数据绑定与监听的实例代码
Jun 23 Javascript
element-ui 中的table的列隐藏问题解决
Aug 24 Javascript
jQuery实现轮播图源码
Oct 23 jQuery
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实现简单爬虫的方法
2015/07/29 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
jQuery中:header选择器用法实例
2014/12/29 Javascript
轻松实现JavaScript图片切换
2016/01/12 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
python里对list中的整数求平均并排序
2014/09/12 Python
Python的函数的一些高阶特性
2015/04/27 Python
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
毕业晚会主持词
2014/03/24 职场文书
安全宣传标语口号
2014/06/06 职场文书
公司自我介绍演讲稿
2014/08/21 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
Golang中channel的原理解读(推荐)
2021/10/16 Golang
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js