AngularJs的表单验证

能够根据用户在表单中输入的内容给出实时视觉反馈是非常重要的。在人与人沟通的语境
中,表单验证给出来的反馈同获得正确输入同等重要。

如果想要屏蔽浏览器对表单的默认验证行为,可以在表单元素上添加novalidate标记。

<form name="form" novalidate>
<label name="email">Your email</label>
<input type="email"
name="email"
ng-model="email" placeholder="Email Address" />
</form>

下面看一下可以在input元素上使用的所有验证选项。

1. 必填项
验证某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可:
<input type="text" required />
2. 最小长度
验证表单输入的文本长度是否大于某个最小值,在输入字段上使用AngularJS指令ng-minleng=
"{number}":
<input type="text" ng-minlength="5" />
3. 最大长度
验证表单输入的文本长度是否小于或等于某个最大值,在输入字段上使用AngularJS指令
ng-maxlength="{number}":
<input type="text" ng-maxlength="20" />

4. 模式匹配
使用ng-pattern="/PATTERN/"来确保输入能够匹配指定的正则表达式:
<input type="text" ng-pattern="[a-zA-Z]" />

5. 电子邮件
验证输入内容是否是电子邮件,只要像下面这样将input的类型设置为email即可:
<input type="email" name="email" ng-model="user.email" />

6. 数字
验证输入内容是否是数字,将input的类型设置为number:

<input type="number" name="age" ng-model="user.age" />

7. URL
验证输入内容是否是URL,将input的类型设置为 url:
<input type="url" name="homepage" ng-model="user.facebook_url" />

8. 自定义验证
在AngularJS中自定义指令是非常容易的。鉴于目前还没有介绍到指令的相关内容,第10章
再深入研究如何创建自定义验证。目前先来看一下如何通过向后端服务器发送请求,并通过响应
的结果来将输入字段设置为合法或不合法,以确保输入字段中的内容是唯一的。

自定义指令:

<my-directive></my-directive>

myDirective指令的定义看起来是这样的:
angular.module(‘myApp‘,[])
.directive(‘myDirective‘, function() {
return {
restrict: ‘E‘,
template: ‘<a href="http://google.com">
Click me to go to Google</a>‘
};
});

通过AngularJS模块API中的.directive()方法,我们可以通过传入一个字符串和一个函数来
注册一个新指令。其中字符串是这个指令的名字,指令名应该是驼峰命名风格的,函数应该返回
一个对象。

驼峰命名风格用来将一个短语写在一个单词中,除了第一个单词外其他单词首
字母大写,中间不加空格。例如,bumpy roads用驼峰风格来写应该是
bumpyRoads。
在我们的例子中,在HTML里使用my-directive声明指令,因此指令定义必须
以myDirective为名字。

directive()方法返回的对象中包含了用来定义和配置指令所需的方法和属性。

默认情况下,AngularJS将模板生成的HTML代码嵌套在自定义标签<my-directive>内部。

下面向指令定义中添加一些新的设置:我们可以将自定义标签从生成的DOM中完全移除掉,
并只留下由模版生成的链接。将replace设置为true就可以实现这个效果:
angular.module(‘myApp‘, [])
.directive(‘myDirective‘, function() {
return {
restrict: ‘E‘,
replace: true,
template: ‘<a href="http://google.com">Click me to go to Google</a>‘
};
});
再次看一下生成后的代码,会发现DOM中原始的指令声明已经不见了,只有我们在模板中
写的HTML代码。replace方法会用自定义元素取代指令声明,而不是嵌套在其内部,如图8-5
所示。

从现在起,我们把创建的这些自定义元素称作指令(用.directive()方法创建),因为事实
上声明指令并不需要创建一个新的自定义元素。

下面都是用来声明前面创建指令的合法格式:
<my-directive></my-directive>
<div my-directive></div>
<div class="my-directive"></div>
<!--directive:my-directive-->

为了让AngularJS能够调用我们的指令,需要修改指令定义中的restrict设置。这个设置告
诉AngularJS在编译HTML时用哪种声明格式来匹配指令定义。我们可以指定一个或多个格式。
例如,之前创建的指令中可以指定以元素(E)、属性(A)、类(C)或注释(M)的格式来
调用指令:

angular.module(‘myApp‘, [])
.directive(‘myDirective‘, function() {
return {
restrict: ‘EAC‘,
replace: true,
template: ‘<a href="http://google.com">Click me to go to Google</a>‘
};
});

无论有多少种方式可以声明指令,我们坚持使用属性方式,因为它有比较好的跨浏览器兼容性:
<div my-directive></div>
为了更加明确我们的意图,将restrict设置为字母A(代表attribute):
restrict: ‘A‘

遵循这个约定的同时,也要注意每个浏览器的内置样式,以便决定指令模板在HTML中是嵌
套在声明元素内,还是替换声明元素。

如果不将URL和链接文本混在指令内部,可以为其他使用我们指令的人提供更好的体验。我
们的目标是关注指令的公共接口,就像其他任何编程语言一样。实际上,应该将上面的模板转换
成可以接受两个变量的形式:一个变量是URL,另一个是链接文本:
template: ‘<a href="{{ myUrl }}">{{ myLinkText }}</a>‘

在主HTML文档中,可以给指令添加myUrl和myLinkText两个属性,这两个参数会成为指令
内部作用域的属性:
<div my-directive
my-url="http://google.com"
my-link-text="Click me to go to Google">
</div>

重新加载页面,注意声明指令的部分已经被模板代替,但是链接的href属性是空的,并且尖
括号内也没有文本,

时间: 2024-10-10 11:44:35

AngularJs的表单验证的相关文章

基于angularJS的表单验证练习

今天看了一下angularJS的表单验证,看的有点云里雾里(也有可能是雾霾吸多了),于是做了一个小练习来巩固一下. html: <div ng-controller="Aaa"> <form novalidate name="loginForm"> <div> <label>用户名</label> <input type="text" name="nText"

AngularJS复习------表单验证

在AngularJS中能够将HTML5表单验证功能同自己的验证指令结合起来使用,这里介绍使用的核心功能. 使用表单验证,首先要确保表单的每个控件都有name属性 如果想要屏蔽浏览器对表单的默认验证行为,可以在表单元素上添加novalidate标记. 必填项:只需要在输入字段元素上添加HTML5标记 required即可 最小长度:在输入字段上使用AngularJS指令ng-minlength="{number}" 最大长度:在输入字段上使用AngularJS指令ng-maxlength

angularJS 过滤器 表单验证

过滤器1.filter的作用就是接收一个输入,通过某个规则进行处理,然后返回处理后的结果,主要用于数据的格式化.2.内置过滤器(1)Currency(货币)将一个数值格式化为货币格式,默认为$(2)Date(3)Filter子串匹配用来处理一个数组,可以过滤出含有某个子串的元素,作为一个字数组来返回.通常用来过滤需要展示的元素.可以是字符串数字,对象或是一个用来从数组中选择元素的函数.字符串:返回所有包含这个字符串的元素对象:将待过滤对象的属性同这个对象中的同名属性进行对比,如果属性值是字符串就

angularjs的表单验证问题

angularjs表单验证问题 1 可以使用angularjs自带验证,(必填项.email.url)使用方法: 通过myForm.personEmail.$valid是否为true 即可判断是否通过验证.具体是哪类错误可以通过demo: <input type="text" required />  必填 <input type="text" ng-minlength="5" /> 最小长度 <input type

AngularJS 的表单验证

最近开始学习angularjs,学到表单验证的时候发现有必要学习下大神的好文章: 转:http://www.oschina.net/translate/angularjs-form-validation 今天我们将来看看Angular如何帮助做表单验证. 我们将讨论更多使用angular进行有关表单操作的东西(就像我们另外的一篇文章: 提交Ajax表单:AngularJS的方式). 不过不用担心,那篇文章不一定要读的. 我们将重点放在客户端验证上,并使用Angular内置的表单属性.这里有一个 

【AngularJs】---表单验证

1. 必填项 验证某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type="text" required /> 2. 最小长度验证表单输入的文本长度是否大于某个最小值,在输入字段上使用AngularJS指令 ng-minleng= "{number}": <input type="text" ng-minlength="5" /> 3. 最大长度验证

AngularJs实现表单验证

首先,我们应该知道,表单中,常用的验证操作有: $dirty 表单有填写记录 $valid 字段内容合法的 $invalid 字段内容是非法的 $pristine 表单没有填写记录 $error 表单验证不通过的错误信息, $error支持的验证有:required/minlength/maxlength/pattern/email/number/date/url等 然后,验证时,需给表单,及需要验证的input,设置name属性:给form及input设置name后,会将form表单信息,默认

AngularJS之表单验证

<body ng-app="myApp" ng-controller="MoinController"> <style> .error { border: 1px solid red!important; } </style> <form name="signUpForm" ng-submit="submitForm()"> <div class="form-gr

AngularJS form表单验证(非常全面)

构建一个ng表单 novalidate=”novalidate” 2.form中不能有action属性.提交交由ng-submit处理 3.每个input一定要有ng-model,最好有一个name方便引用.然后用require或者ng-minlength之类才起作用 <form name="form" novalidate="novalidate"> <label name="email">Your email</