在AngularJS中实现自定义表单验证
除了一些已经定义好了的验证(例如 必填项、最小长度、最大长度)之外,更常用的,还是需要我们自己定义表单验证,这样才能对于项目中遇到的很多非常规问题给出自己的合适的解决方案。
- 在表单中控制变量
表单的属性可以在其所属的$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类会被添加到这个字段上。
- 尽管实时验证有时候非常必要,但是如果在用户还没有结束输入就提醒出错,是非常糟糕的用户体验,解决的办法有两个,第一,在提交表单的时候验证;第二,在input失去焦点时进行验证。
- Tips:不要忘记给输入字段添加name属性。给输入字段添加name属性非常重要:这决定了我们将验证信息展示给用户时如何引用表单输入字段。
- 用$dirty属性来确保用户未对输入内容进行修改时错误内容不会显示出来:
- AngularJS表单验证总结
- AngularJS表单验证规则
- required 必填项
- type="number" 必须为数字
- type="email" 必须为邮箱
- ng-max 最大值
- ng-min 最小值
- ng-max-length 最大长度
- ng-min-length 最小长度
- ng-pattern 正则验证
- 等等
- AngularJS默认验证是实时的,通过修改ng-invalid ng-valid ng-dirty 三个样式达到验证提示的目的。
- AngularJS验证的缺点
- 提示信息是实时显示的,有时候我们更想通过表单触发验证
- 写验证提示需要写大量模板
- ng-class 用来控制class的值,例如ng-class="{'has-success':! formName.inputName.$pristine}"的意思就是如果! formName.inputName.$pristine的值为true,class的值就是has-success.
- ng-show:控制是否显示该控件
- formName.$valid 表单全部验证通过后,值为true,否则为false
- formName.inputName.$valid 标识为inputName控件是否通过验证,通过为true
- formName.inputName.$pristine 标识inputName控件是否从未输入过,从未输入为true值。
在AngularJS中实现自定义表单验证的更多相关文章
- AngularJS中使用的表单验证
Reference: http://www.tuicool.com/articles/2Qbiqi 客户端表单验证是AngularJS里面最酷的功能之一. AngularJS表单验证可以让你从一开始就 ...
- (译) 在AngularJS中使用的表单验证功能【转】
验证功能是AngularJS里面最酷炫的功能之一,它可以让你写出一个具有良好用户体验的Web应用. 在AngularJS中,有许多用于验证的指令.我们将先学习几个最流行的内置指令,然后再创建一个自定义 ...
- (译) 在AngularJS中使用的表单验证功能
验证功能是AngularJS里面最酷炫的功能之一,它可以让你写出一个具有良好用户体验的Web应用. 在AngularJS中,有许多用于验证的指令.我们将先学习几个最流行的内置指令,然后再创建一个自定义 ...
- (转)AngularJS中使用的表单验证
原文 http://www.cnblogs.com/woshinidezhu/p/Form-validation-with-AngularJS.html 客户端表单验证是AngularJS里面最酷的 ...
- Angular5+ 自定义表单验证器
Angular5+ 自定义表单验证器 Custom Validators 标签(空格分隔): Angular 首先阐述一下遇到的问题: 怎样实现"再次输入密码"的验证(两个cont ...
- jquery.validate.js使用之自定义表单验证规则
jquery.validate.js使用之自定义表单验证规则,下面列出了一些常用的验证法规则 jquery.validate.js演示查看 jquery validate强大的jquery表单验证插件 ...
- layui 自定义表单验证的几个实例
*注:使用本方法请先引入layui依赖的layu.js和layui.css 1.html <input type="text" name="costbudget&q ...
- Angular自定义表单验证
前端表单验证 为年龄输入框添加了两个验证,并分情况填写了提示语 <form nz-form [formGroup]="validateForm"> <nz-for ...
- angular4 自定义表单验证Validator
表单的验证条件有时候满足不了需求就可以自定义验证 唯一要求返回是ValidatorFn export interface ValidatorFn{ (c:AbstractControl):Valida ...
随机推荐
- LeetCode129:Sum Root to Leaf Numbers
题目: Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a nu ...
- PHP OAuth2 Server库
想找比较正宗的库,查了蛮久的.最后在 oauth官方站上,看到PHP版本的相关链接. 发现都是php 5.3版本以上的环境,基于命名空间的写法编写的. 访问下面这个页面,难得,发现文档给出了5.2版本 ...
- CMS如何提供XML格式的接口
在做APP的过程中,需要服务端的接口数据. 是用Json格式还是Xml格式呢,很多人会说还是xml习惯. 然而PHP更适合返回的还是json,php核心库中就包含了json编码的函数,可以直接将数组转 ...
- DP入门---Robberies
HDU 2955 Description The aspiring Roy the Robber has seen a lot of American movies, and knows that ...
- jdbcTemplate queryForObject 查询 结果集 数量
1.组织sql语句, 查询参数 数组, 设置返回类型 public int countByCondtion(String title, int mediaType, String currentSta ...
- php 7 windows redis 扩展
搜了一圈也没找到redis 对于 php 7 windows 扩展,最后还是在apache lounge论坛找到了php7全扩展包 本人把里面的扩展全进行了上传(下载见本文底部) 在这里主要讲讲 ph ...
- 如何使用mybatis《一》
mybatis作为ORM轻量级框架一出现就吸引了无数人的眼球,比hibernate要简单且入门较容易,下面开始我的第一个mybatis程序. 一.下载mybatis的包 我们知道任何一个框架都会有其包 ...
- 3kb jQuery代码搞定各种树形选择。
自制Jquery树形选择插件. 对付各种树形选择(省市,分类..)90行Jquery代码搞定,少说废话直接上插件代码.稍后介绍使用说明.是之前写的一个插件的精简版. 1.Jquery插件代码 /* * ...
- SharePoint 2013 新功能探索 之 标注控件
SharePoint 2013 引入了新的UI,同时也跟进了网络潮流,把应用最广泛的标注控件也引入到了SharePoint,先看两个应用 以上是两个开发当中经常会用到,下面就介绍一下如何开发相同 ...
- 【使用 DOM】使用 Document 对象
Document 对象时通往DOM功能的入口,它向你提供了当前文档的信息,以及一组可供探索.导航.搜索或操作结构与内容的功能. 我们通过全局变量document访问Document对象,它是浏览器为我 ...