angularJS中的表单验证(包括自定义验证)
表单验证是angularJS一项重要的功能,能保证我们的web应用不会被恶意或错误的输入破坏。Angular表单验证提供了很多表单验证指令,并且能将html5表单验证功能同他自己的验证指令结合起来使用,进而在客户端验证时提供表单状态的实时反馈。
要使用表单验证,首先保证表单有一个name属性,一般的输入字段如最大,最小长度等,这些功能由html5表单属性提供,如果我们想屏蔽浏览器对表单的默认验证行为,可以在表单元素上添加novalidate标记。
表单基本格式如下:
<form name="form" novalidate>
<label for="email">你的邮箱:</label>
<input type="email" name="email" id="email" ng-model="user.email" placeholder="邮箱地址">
</form>
当然在input元素上还可以使用很多验证选项,比如:
1.必填项,设置某个表单输入是否已经填写,只需要在输入字段元素上添加require标记即可。
<input type="text" required>
2.最小(大)长度,验证表单输入的文本长度是否大于某个最小值,可以使用ng-minlength指令(ng-maxlength指令)
<input type="text" ng-minlength="5" ng-maxlength>
3.模式匹配,使用ng-pattern来确保输入匹配指定的正则表达式
<input type="text" ng-pattern="/^[a-zA-Z]$/">
4. 电子邮件,只需要把input的类型设置为email即可
<input type="email" name="email" ng-model="user.email" >
5.数字,只需要将input的类型设置为number
<input type="number" name="age" ng-model="user.age">
6.URL,将input的类型设置为url
<input type="url" name="homepage" ng-modle="user.url">
7.自定义验证,在实际项目中我们通常会遇到比较复杂的验证,这时我们可以采用自定义验证。自定义验证使用的是自定义指令的方式,处理表单输入的内容,将结果转化为布尔值从而进行验证。比如我们需要向后台请求数据来判断用户名是否有效:
Html:
<input type="text" placeholder="username" name="usrename" ng-model="user.username" check-username="username">
自定义指令部分:(只是一个简单的势力)
app.directive('checkUsername', function($http){
return {
require: 'ngModel',
link: function(scope, ele, attrs, c){
scope.$watch(attrs.ngModel, function(n){
if(!n) return;
$http({
method: 'POST',
url: '/api/check/' + attrs.username,
data:{
field: attrs.username,
value: scope.ngModel
}
}).success(function(data){
c.$setValidity('unique', data.isUnique);
}).error(function(data){
c.$setValidity('unique', false);
})
});
}
}
});
通过指令返回unique的布尔值来决定显示的警告信息。
由于表单的属性可以在其$scope对象中访问到,而我们又可以直接访问到$scope,因此js可以间接的访问DOM的表单属性,借助这些属性,我们可以对表单做出实时响应。
这些属性有:
1. 未修改的表单,用来判断用户是否修改了表单,如果修改了则为true,未修改则为false。
formName.inputFieldName.$pristine
2. 修改过的表单,只要用户修改过表单,无论输入是否通过验证,该值都将返回true
formName.inputFieldName.$dirty
3. 合法的表单,这个属性是用来判断表单的内容是否合法的,如果合法则该属性的值为true
formName.inputFieldName.$valid
4. 不合法的表单,这个属性与上个属性正好相反,如果不合法,则该属性值为true
formName.inputFieldName.$invalid
5. 错误,$error对象包含了当前表单的所有验证内容,以及它们是否合法的信息,如果验证失败,该属性值为true,如果验证成功,则该值为false
formName.inputFieldName.$error
表单验证的基础部分暂时就这些,剩下的明天补上。
angularJS中的表单验证(包括自定义验证)的更多相关文章
- AngularJS中的表单验证
AngularJS中的表单验证 AngularJS自带了很多验证,什么必填,最大长度,最小长度...,这里记录几个有用的正则式验证 1.使用angularjs的表单验证 正则式验证 只需要配置一个正则 ...
- EasyUI中在表单提交之前进行验证
使用EasyUi我们可以在客户端表单提交之前进行验证,过程如下:只需在onSubmit的时候使用return $("#form1").form('validate')方法即可,E ...
- AngularJS 表单提交后显示验证信息与失焦后显示验证信息
虽然说AngularJS的实时表单验证非常有用,非常高效方便,但是当用户还没有完成输入时便弹出一个错误提示,这种体验是非常糟糕的. 正常的表单验证逻辑应该是在用户提交表单后或完成当前字段中的输入后,再 ...
- jq中的表单验证插件------jquery.validate
今天我们来说一下表单验证,有人说我们在进行表单验证的时候使用正则来验证是非常麻烦的,现在我来给大家介绍一下表单验证的插件:jquery.validate.min.js 它是与jquery一起结合用来使 ...
- angular中的表单验证
angular中的表单验证很强大, 一共有5中验证信息,$valid,$invalid,$pristine,$dirty,$error. $valid-----当验证通过的时候,为true,不通过的时 ...
- Python的Django框架中forms表单类的使用方法详解
用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...
- django中form表单的提交:
一,关于表单: 表单在百度百科的解释: 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域 ...
- vue中的表单异步校验方法封装
在vue项目的开发中,表单的验证必不可少,在开发的过程中,用的是vue+iview的一套,我们知道iview的表单验证是基于async-validator,对于async-validator不熟悉的可 ...
- js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符
js中对arry数组的各种操作小结 最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...
随机推荐
- 【洛谷】xht模拟赛 题解
前言 大家期待已久并没有的题解终于来啦~ 这次的T1和HAOI2016撞题了...深表歉意...表示自己真的不知情... 天下的水题总是水得相似,神题各有各的神法.--<安娜·卡列妮娜> ...
- LINUX环境下的GUN MAKE学习笔记(二)
第三章:makefile总述 3.1makefile的内容 在一个完整的makefile中,包含显示规则.隐含规则.变量定义.指示符和注释.下面讨论一些基本概念: 显示规则:它描述了在何种情况下如何更 ...
- Java常见知识点(二)
21.常量池专门用于管理在编译时被确定并被保存在已编译的.class文件中的一些数据.它包括了关于类.方法.接口中的常量,还包括字符串常量. 22.String已经重写了Object的equals ...
- BZOJ 1800
1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1622 Solved: 1293[Submit][St ...
- Selenium2+python自动化49-判断文本(text_to_be_present_in_element)【转载】
前言 在做结果判断的时候,经常想判断某个元素中是否存在指定的文本,如登录后判断页面中是账号是否是该用户的用户名. 在前面的登录案例中,写了一个简单的方法,但不是公用的,在EC模块有个方法是可以专门用来 ...
- Hydra--密码破解的神器
原来不止burpsuit.sqlmap是神器,还有Hydra. 虽久闻大名,却未曾使用,今天偶然用到,发现支持的服务那真是多,ftp.ssh.smtp.imap.http...,而且支持ssl 可以想 ...
- windows上的命令telnet
telnet可以测试端口号是否可用,比如: telnet ip:port 或者 telnet www.baidu.com PS:win7环境下,默认没有安装telnet客户端,你可以去“控制面板”-- ...
- 使用httpclient异步调用WebAPI接口
最近的工作需要使用Bot Framework调用原有的WebAPI查询数据,查找了一些方法,大部分都是使用HttpClient调用的,现时贴出代码供参考 using System; using Sys ...
- configure.ac中AC_CHECK_LIB的问题
编译Linux程序时,使用configure.ac生成的configure程序,时常会出现AC_CHECK_LIB检查某个库失败 而相应库通常是存在的,只是依赖于其他的库,此时,需要乃至AC_CHEC ...
- oracle tablespace usage status
select a.tablespace_name, a.bytes / 1024 / 1024 "Sum MB", (a.bytes - b.bytes) / 1024 / 102 ...