本文主要为大家详细介绍了AngularJS表单验证功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。
能够根据用户在表单中输入的内容给出实时视觉反馈是非常重要的。在人与人沟通的语境中,表单验证给出来的反馈同获得正确输入同等重要。
表单验证不仅能给用户提供有用的反馈,同时也能保护我们的Web应用不会被恶意或者错误的输入所破坏。我们要在Web前端尽力保护后端。
AngularJS能够将HTML5表单验证功能同它自己的验证指令结合起来使用,并且非常方便。AngularJS提供了很多表单验证指令。
<form name="form" novalidate> <label name="email">Your email</label> <input type="email" name="email" ng-model="email" placeholder="Email Address"/> </form>
要使用表单验证,首先要确保表单像上面的例子一样有一个 name 属性。
所有输入字段都可以进行基本的验证,比如最大、最小长度等。这些功能是由新的HTML5表单属性提供的。
如果想要屏蔽浏览器对表单的默认验证行为,可以在表单元素上添加 novalidate 标记
1. 必填项 required
验证某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记 required 即可:
注释:required 属性适用于以下 类型:text, search, url, telephone, email, password, date pickers, number, checkbox, radio 以及 file
<input type="text" required />
2. 最小长度 ng-minleng="{number}"
验证表单输入的文本长度是否大于某个最小值,在输入字段上使用AngularJS指令 ng-minleng="{number}"
<input type="text" ng-minlength="5" />
3. 最大长度 ng-maxlength="{number}"
验证表单输入的文本长度是否小于或等于某个最大值,在输入字段上使用AngularJS指令 ng-maxlength="{number}"
<input type="text" ng-maxlength="20" />
4. 模式匹配 ng-pattern="/PATTERN/"
使用 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" />
在表单中控制变量
表单的属性可以在其所属的 $scope 对象中访问到,而我们又可以访问 $scope 对象,因此JavaScript可以间接地访问DOM中的表单属性。借助这些属性,我们可以对表单做出实时(和AngularJS中其他东西一样)响应。这些属性包括下面这些。(注意,可以使用下面的格式访问这些属性。)
formName.inputFieldName.property
■未修改的表单
这是一个布尔属性,用来判断用户是否修改了表单。如果未修改,值为 true ,如果修改过值为 false
formName.inputFieldName.$pristine
■修改过的表单
只要用户修改过表单,无论输入是否通过验证,该值都返回 true
formName.inputFieldName.$dirty
■合法的表单
这个布尔型的属性用来判断表单的内容是否合法。如果当前表单内容是合法的,下面属性的值就是 true :
formName.inputFieldName.$valid
■ 不合法的表单
这个布尔属性用来判断表单的内容是否不合法。如果当前表单内容是不合法的,下面属性的值为 true :
formName.inputFieldName.$invalid
■ 错误
这是AngularJS提供的另外一个非常有用的属性: $error 对象。它包含当前表单的所有验证内容,以及它们是否合法的信息。用下面的语法访问这个属性:
formName.inputfieldName.$error
$parsers
当用户同控制器进行交互,并且 ngModelController 中的 $setViewValue() 方法被调用时,$parsers 数组中的函数会以流水线的形式被逐个调用。第一个 $parse 被调用后,执行结果会传递给第二个 $parse ,以此类推
这些函数可以对输入值进行转换,或者通过 $setValidity() 函数设置表单的合法性。
使用 $parsers 数组是实现自定义验证的途径之一。
例如,假设我们想要确保输入值在某两个数值之间,可以在 $parsers 数组中入栈一个新的函数,这个函数会在验证链中被调用。
每个 $parser 返回的值都会被传入下一个 $parser 中。当不希望数据模型发生更新时返回undefined 。
html
<!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>表单测试</title> <link rel="stylesheet" href=""> <script type="text/javascript" src="angular.1.2.13.js"></script> </head> <body> <p ng-controller="TestController"> <form name="testForm"> <input type="number" name="inputs" ng-test ng-model="obj.number"> <span ng-show="testForm.inputs.$error.test">good</span> <span ng-hide="testForm.inputs.$error.test">bad</span> <p>{{ testForm.inputs.$valid }}</p> <p>{{ testForm.inputs.$invalid }}</p> <p>{{ obj.number }}</p> </form> </p> <script type="text/javascript" src="test5app.js"></script> </body> </html>
javascript ( test5app.js )
angular.module('myApp', []).controller('TestController', function($scope) { $scope.obj = { number: 34 } }).directive('ngTest', function() { return { require: '?ngModel', restrict: 'AE', link: function($scope, iElm, iAttrs, ngModel) { if (!ngModel) return; ngModel.$parsers.push(function(viewValue) { var num = parseInt(viewValue); if (num >= 0 && num < 99) { ngModel.$setValidity('test', true); return viewValue } else { ngModel.$setValidity('test', false); return undefined } }) } } });
相关推荐:
AngularJS实现的获取焦点及失去焦点时的表单验证功能详解
以上是AngularJS表单验证功能实现方法的详细内容。更多信息请关注PHP中文网其他相关文章!

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3汉化版
中文版,非常好用

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器