在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 ...
随机推荐
- HDU 5694---BD String
HDU 5694 Problem Description 众所周知,度度熊喜欢的字符只有两个:B和D.今天,它发明了一种用B和D组成字符串的规则:S(1)=BS(2)=BBDS(3)=BBDBBD ...
- linux shell 编程
1,获取命令执行的结果,字符串拼接(脚本最常使用的功能) cmd_result=$(date +%Y%b%d) //使用变量获取命令执行的结果 或者 cmd_result=`date ...
- 【原创】.NET Core应用类型(Portable apps & Self-contained apps)
介绍 有许多种方式可以用来考虑构建应用的类型,通常类型用来描述一个特定的执行模型或者基于此的应用.举例说:控制台应用(Console Application).Web应用(Web Applicatio ...
- [翻译]:SQL死锁-阻塞
一般情况下死锁不是一步到位的,它必须满足特定的条件,然后形成资源的循环依赖才会产生死锁,死锁之前一定会出现阻塞,由阻塞升级才有可能出现死锁,所以我们有必要了解系统中都有哪些已经被阻塞的锁. 我在解决共 ...
- 趣味题:恺撒Caesar密码(c++实现)
描述:Julius Caesar 生活在充满危险和阴谋的年代.为了生存,他首次发明了密码,用于军队的消息传递.假设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破译出来.并提供给你 ...
- 微信jssdk,实现多图上传的一点心得
一.首先在common.js里封装一个函数,在需要调用jsSDK的页面引用此方法即可实现微信的信息配置function signatureJSSDK() { var url = window.loca ...
- andriod 图片选择器
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="ht ...
- android 读中文文本文件
AndroidManifest.xml中 加入: <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="and ...
- Spark中的RDD操作简介
map(func) 对数据集中的元素逐一处理,变为新的元素,但一个输入元素只能有一个输出元素 scala> pairData.collect() res6: Array[Int] = Array ...
- yii url美化 urlManager组件
yii的官方文档对此的解释如下: urlSuffix 此规则使用的url后缀,默认使用CurlManger::urlSuffix,值为null.例如可以将此设置为.html,让url看起来“像”是一 ...