AngularJs轻松搞定表单验证

  表单验证在很多地方都会用到,在学习angular之前,我觉得表单验证是一个很麻烦的事情,需要在js中写大量的代码,但是在angular中,只需要写很少的代码就能完成以前需要很多代码才能完成的东西。

  在angular中,当我们在input标签中加入ng-model之后,angular会为这个标签自动生成一系列的class。例如:

<!DOCTYPE html>
<html ng-app="myApp">
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="js/angular.min.js"></script>
    <script>
        angular.module("myApp",[]).controller("confirmation",function($scope){
        });
    </script>
</head>
<body>
    <form ng-controller="confirmation">
        <input type="text" ng-model="username" />
    </form>
</body>
</html>

然后在页面加载完成时,我们来审查元素

可以很明显的看到这个标签多了两个类名:ng-pristine,ng-valid。

那么这两个类名有什么用呢,第一个ng-pristine是用来监听这个标签是否是原始的标签,意思就是,这个输入框还没有输入过值,当输入任意值后这个类名就会变成ng-dirty,然后,我们验证表单用到的其实是第二个:ng-valid这个是angular提供的用于表单验证的类名,ng-valid表示通过验证,ng-invalid表示不通过。我们先来看看下面的一段代码,还是刚刚那段,只是在input中加上了验证条件:

<form ng-controller="confirmation">
    <input type="text" ng-model="username" required ng-pattern="/^\w{6,20}$/"/>
</form>

其中required是html5提供的表示输入框不能为空,ng-pattern是用来写正则表达式的,然后我们再来看看审查元素的结果

可以看见类名又多了两个ng-invalid-required和ng-valid-pattern。

相信都清楚了这两个类名的作用了吧,一个用来验证输入框的required验证,一个用于表单中正则表达式的验证。

其中ng-valid-?和ng-invalid-?分别表示通过?处的验证和不通过,然后ng-valid表示通过这个输入框的所有验证,ng-invalid表示没有全部通过。

知道这些之后,表单验证就显得很简单了,比如我们想在验证通过时在输入框后面给用户一个提示就可以这样写:

<!DOCTYPE html>
<html ng-app="myApp">
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="js/angular.min.js"></script>
    <script>
        angular.module("myApp",[]).controller("confirmation",function($scope){
        });
    </script>
    <style>
        span{
            display: none;
        }
        .ng-valid+span{
            display: inline;
            color: green;
        }
    </style>
</head>
<body>
    <form ng-controller="confirmation">
        <input type="text" ng-model="username" required ng-pattern="/^\w{6,20}$/"/>
        <span>验证通过</span>
    </form>
</body>
</html>

如果有错误或者不足,还望各位大神指点。

时间: 2024-10-10 02:28:48

AngularJs轻松搞定表单验证的相关文章

jQuery_review之一行语句搞定表单焦点样式

众所周知,各种浏览器对于HTML.CSS以及原生JS的支持不尽相同.但是jQuery很好地封装了各种浏览器不同的实现,能够很好地解决跨浏览器的CSS问题.下面就是在review表单操作的时候的一个DEMO,记录在这个地方,方便后面做项目的时候查找使用. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <script type="

AngularJs 入门系列-2 表单验证

对于日常的开发来说,最常见的开发场景就是通过表单编辑数据,这里涉及的问题就是验证问题. angularjs 内置已经支持了常见的验证方式,可以轻松实现表单验证. 1. 绑定 为了方便,我们在 $scope 上下文对象上创建一个 model 来表示我们编辑的内容. $scope.model = { id : 8, name: "alice", email: "[email protected]" }; angularjs 的验证需要表单的配合,为了能够访问表单,我们需

AngularJS学习笔记(二) 表单验证案例(ng-repeat/filter)

这一节相对来说需要理解的东西不是太多,记住了那些api就行了. 还是一个案例(同样来自miaov),一个表单验证,先上代码,然后再对对应的内容进行解释. <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <meta charset="UTF-8"> <title>Title</title> </head>

AngularJS中使用的表单验证

Reference: http://www.tuicool.com/articles/2Qbiqi 客户端表单验证是AngularJS里面最酷的功能之一. AngularJS表单验证可以让你从一开始就写出一个具有交互性和可相应的现代HTML5表单. 在AngularJS中,有许多表单验证指令.在这里,我们将谈谈几个最流行指令,然后我们将讨论如何编写自定义的验证. <form name="form"> <label name="email">Y

在AngularJS中实现自定义表单验证

除了一些已经定义好了的验证(例如 必填项.最小长度.最大长度)之外,更常用的,还是需要我们自己定义表单验证,这样才能对于项目中遇到的很多非常规问题给出自己的合适的解决方案. 在表单中控制变量 表单的属性可以在其所属的$scope对象中访问到,而我们又可以访问$scope对象,因此JavaScript可以间接地访问DOM中的表单属性.借助这些属性,我们可以对表单做出实时响应.可以使用下面这样的格式来访问这些属性: formName.inputFileldName.property 未修改的表单 f

AngularJS使用ngMessages进行表单验证

本文转载(已经找不到原作者...) 名称为"ngMessages"的module,通过npm install angular-messages进行安装.在没有使用ngMessages之前,我们可能这样写验证: <form name="userForm"> <input type="text" name="username" ng-model="user.username" ng-minle

(译) 在AngularJS中使用的表单验证功能【转】

验证功能是AngularJS里面最酷炫的功能之一,它可以让你写出一个具有良好用户体验的Web应用. 在AngularJS中,有许多用于验证的指令.我们将先学习几个最流行的内置指令,然后再创建一个自定义验证规则的指令. <form name="form"> <label name="email">Your email</label> <input type="email" name="email&

JBPM6教程-如何搞定表单乱码

由于jBPM6国际化的问题,JBPM6有很多表单都出现了乱码的情形,详情见下图.有的是中文排版的问题(如仪表盘中的视图),有的是国际化中没有中文所导致的.要么2B的去把缺少的中文文件去补充完,要么就是把显示语言更改为英文. (1)FireFox切换为英文的方案如下: 在"工具" ->  "内容" -> "语言"面板中,将"英语/美国[en-us]"设置为首选. (2)Chrome 切换为美国英语的步骤如下: 在&q

AngularJS使用angular-formly进行表单验证

当验证表单中有很多字段时,这时候可能希望把html的生成以及验证逻辑放到controller中,在页面,也许是这样的: <some-form fiedls="vm.someFields" ...></some-form> 然后,在controller中定义各个字段以及验证.angular-formly就是为这个需求而存在. 在controller中,把各个字段定义在数组中: vm.rentalFields = [ { key:'first_name', type