除了一些已经定义好了的验证(例如 必填项、最小长度、最大长度)之外,更常用的,还是需要我们自己定义表单验证,这样才能对于项目中遇到的很多非常规问题给出自己的合适的解决方案。

  1. 在表单中控制变量

    表单的属性可以在其所属的$scope对象中访问到,而我们又可以访问$scope对象,因此JavaScript可以间接地访问DOM中的表单属性。借助这些属性,我们可以对表单做出实时响应。可以使用下面这样的格式来访问这些属性:

    formName.inputFileldName.property

    未修改的表单 formName.inputFieldName.$pristine

    修改过的表单 formName.inputFiledName.$dirty

    合法表单 formName.inputFieldName.$valid

    不合法表单 formName.inputFieldName.$invalid

    错误 formName.inputfieldName.$error    如果验证失败,该值为true,如果验证通过,该值为false

    一些有用的CSS样式

    AngularJS处理表单时,会根据表单当前的状态添加一些CSS类,这些CSS类名称比较类似与相应的属性:

    .ng-pristine{}

    .ng-dirty{}

    .ng-valid{}

    .ng-invalid{}

    它们对应着表单输入字段的特定状态,当某个字段输入非法时,ng-invalid类会被添加到这个字段上。

  2. 尽管实时验证有时候非常必要,但是如果在用户还没有结束输入就提醒出错,是非常糟糕的用户体验,解决的办法有两个,第一,在提交表单的时候验证;第二,在input失去焦点时进行验证。
  3. Tips:不要忘记给输入字段添加name属性。给输入字段添加name属性非常重要:这决定了我们将验证信息展示给用户时如何引用表单输入字段。
  4. 用$dirty属性来确保用户未对输入内容进行修改时错误内容不会显示出来:
  5. AngularJS表单验证总结
    1. AngularJS表单验证规则
      1. required 必填项
      2. type="number" 必须为数字
      3. type="email" 必须为邮箱
      4. ng-max 最大值
      5. ng-min 最小值
      6. ng-max-length 最大长度
      7. ng-min-length 最小长度
      8. ng-pattern 正则验证
      9. 等等
    2. AngularJS默认验证是实时的,通过修改ng-invalid ng-valid ng-dirty     三个样式达到验证提示的目的。
    3. AngularJS验证的缺点
      1. 提示信息是实时显示的,有时候我们更想通过表单触发验证
      2. 写验证提示需要写大量模板
  6. ng-class 用来控制class的值,例如ng-class="{'has-success':! formName.inputName.$pristine}"的意思就是如果! formName.inputName.$pristine的值为true,class的值就是has-success.
  7. ng-show:控制是否显示该控件
  8. formName.$valid 表单全部验证通过后,值为true,否则为false
  9. formName.inputName.$valid 标识为inputName控件是否通过验证,通过为true
  10. formName.inputName.$pristine 标识inputName控件是否从未输入过,从未输入为true值。

在AngularJS中实现自定义表单验证的更多相关文章

  1. AngularJS中使用的表单验证

    Reference: http://www.tuicool.com/articles/2Qbiqi 客户端表单验证是AngularJS里面最酷的功能之一. AngularJS表单验证可以让你从一开始就 ...

  2. (译) 在AngularJS中使用的表单验证功能【转】

    验证功能是AngularJS里面最酷炫的功能之一,它可以让你写出一个具有良好用户体验的Web应用. 在AngularJS中,有许多用于验证的指令.我们将先学习几个最流行的内置指令,然后再创建一个自定义 ...

  3. (译) 在AngularJS中使用的表单验证功能

    验证功能是AngularJS里面最酷炫的功能之一,它可以让你写出一个具有良好用户体验的Web应用. 在AngularJS中,有许多用于验证的指令.我们将先学习几个最流行的内置指令,然后再创建一个自定义 ...

  4. (转)AngularJS中使用的表单验证

    原文  http://www.cnblogs.com/woshinidezhu/p/Form-validation-with-AngularJS.html 客户端表单验证是AngularJS里面最酷的 ...

  5. Angular5+ 自定义表单验证器

    Angular5+ 自定义表单验证器 Custom Validators 标签(空格分隔): Angular 首先阐述一下遇到的问题: 怎样实现"再次输入密码"的验证(两个cont ...

  6. jquery.validate.js使用之自定义表单验证规则

    jquery.validate.js使用之自定义表单验证规则,下面列出了一些常用的验证法规则 jquery.validate.js演示查看 jquery validate强大的jquery表单验证插件 ...

  7. layui 自定义表单验证的几个实例

    *注:使用本方法请先引入layui依赖的layu.js和layui.css 1.html <input type="text" name="costbudget&q ...

  8. Angular自定义表单验证

    前端表单验证 为年龄输入框添加了两个验证,并分情况填写了提示语 <form nz-form [formGroup]="validateForm"> <nz-for ...

  9. angular4 自定义表单验证Validator

    表单的验证条件有时候满足不了需求就可以自定义验证 唯一要求返回是ValidatorFn export interface ValidatorFn{ (c:AbstractControl):Valida ...

随机推荐

  1. 新增的querySelector、querySelectorAll测试

    从IE9开始DOM开始支持支持CSS的选择器了,DOM提供了两个接口 querySelector 得到一个DOM querySelectorAll 得到一组DOM 一个个的解释这些选择器也没有必要,我 ...

  2. 【C#】1.2 控制台应用程序学习要点

    分类:C#.VS2015 创建日期:2016-06-14 教材:十二五国家级规划教材<C#程序设计及应用教程>(第3版) 一.要点概述 <C#程序设计及应用教程>(第3版)的第 ...

  3. ACCESS的参数化查询

    看论坛上还许多人问及ACCESS被注入的安全问题许多人解决的方法仍然是用Replace替换特殊字符,然而这样做也并没有起到太大做用今天我就把我用ACCESS参数化查询的一些方法和经验和大家分享希望对大 ...

  4. C#强力粉碎文件代码分享,升级中用到

    360的文件粉碎机还是很强大的,在我们客户端winform升级的时候,必须将有些文件进行强力删除后下载更新,如果删除失败很有可能整个 程序就无法更新到最新的版本,所以这里参考了网上的资料整理了一个文件 ...

  5. jdk1.8 ThreadPoolExecutor实现机制分析

    ThreadPoolExecutor几个重要的状态码字段 private static final int COUNT_BITS = Integer.SIZE - 3; private static ...

  6. ASP.NET WebAPI 09 Controller的激活

    在Controller之前我们先回顾一下HttpMessageHandler通道. 在这个图中我留一个HttpContollerDispatcher没有说明.因为这个类也是继承自HttpMessage ...

  7. .NET Core Roadmap

    This post was written by Scott Hunter. It has been about two weeks since we shipped .NET Core / ASP. ...

  8. bootstrap 学习笔记

    bootstrap作为当下的流行框架不知道它怎么能行呢? 之前也看过好多bootstrap的网上教程,可是发现光看真的记不住,说起来也真是忧桑~重点还是要自己做才是真正的印象深刻.后来我发现解析模板是 ...

  9. android webview 介绍

    在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装成名为WebView的组件. WebView使用: (1)添加权限:AndroidManifest.xml中必须使用许可&q ...

  10. Python: 关于nose

    1. 使用rednose增强输出 pip install rednose nosetests --rednose tests 2. 使用coverage pip install coverage no ...