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进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...
随机推荐
- Spring ClassPathXmlApplicationContext和FileSystemXmlApplicationContext读取配置文件的方法
先说:ClassPathXmlApplicationContext 这个类,默认获取的是WEB-INF/classes/下的路径,也就是在myeclipse的src下的路径,所以用这个是获取不到WEB ...
- 【cocos2d-js官方文档】四、基础数据类型
基础数据类型统一通过方法来创建.不再支持new方式 1.坐标cc.Point 一共3种创建方式 结构:{x:0,y:0} //1 快捷创建,返回相当于cc.p(0,0) var point1 = cc ...
- Opencv利用Mat访问像素值
如果是采用Mat形式存储,想要访问灰度图像的灰度值,可以采用如下方法: 如果是彩色图像,采用如下方法: 说明: 其中gray_value中存放灰度值,image是读入的图像,i表示行,j表示列: co ...
- Problem A: 英雄无敌3(1)【dp/待补】
Problem A: 英雄无敌3(1) Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 86 Solved: 16[Submit][Status][ ...
- python 输入 与如何查看文档 小结
Python 2 中的输入小结 转载请声明本文的引用出处:仰望大牛的小清新 1.raw_input(prompt = None)与input(prompt = None) 两个都是默认参数类型,这个参 ...
- 手动安装python3和xgboost
yum install openssl-devel -y .tar.xz cd Python- ./configure --prefix=/usr/local/python3.5.4 make mak ...
- 23、Django实战第23天:视频播放页面
打开素材course-play.html,会发现播放页面处了包含播放器,其他和“章节”页面一样. 1.把course-play.html复制到template目录下 2.把下面两段代码拷贝出来 < ...
- 13、Django实战第13天:分页列表功能
我们看课程 机构列表页是需要分页的 为了完成分页功能,我们需要用到Django的一个开源开发库django-pure-pagination workon mxonline pip install dj ...
- POJ 2079 Triangle (凸包+旋转卡壳)
[题目链接] http://poj.org/problem?id=2079 [题目大意] 给出一些点,求出能组成的最大面积的三角形 [题解] 最大三角形一定位于凸包上,因此我们先求凸包,再在凸包上计算 ...
- 【bitset】hdu4920 Matrix multiplication
先把两个矩阵全都mod3. S[i][j][k]表示第i(0/1)个矩阵的行/列的第k位是不是j(1/2). 然后如果某两个矩乘对应位上为1.1,乘出来是1: 1.2:2: 2.1:2: 2.2:1. ...