AngularJs实现表单验证

首先,我们应该知道,表单中,常用的验证操作有:

$dirty 表单有填写记录
$valid 字段内容合法的
$invalid 字段内容是非法的
$pristine 表单没有填写记录
$error 表单验证不通过的错误信息, $error支持的验证有:required/minlength/maxlength/pattern/email/number/date/url等

然后,验证时,需给表单,及需要验证的input,设置name属性;给form及input设置name后,会将form表单信息,默认绑定到$scope作用域中。故,可以使用 formName.inputName.$验证操作

若要实现上图表单验证功能,代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" href="libs/bootstrap.css" />
        <style type="text/css">
            .row{
                margin-bottom: 10px;
            }
            .row .col-xs-5{
                text-align: center;
            }
            .suc{
                border-color: #3c763d;
                  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
                      box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
            }
            .suc:focus{
                border-color: #2b542c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
            }

            .err{
                border-color: #a94442;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
            }
            .err:focus{
                border-color: #843534;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
            }
        </style>
    </head>

    <body ng-app="app" ng-controller="ctrl">
    <div class="container" style="width: 40%; margin: 50px auto; padding: 0px;">
        <div class="panel panel-primary">
            <div class="panel-heading">
                <div class="panel-title" style="text-align: center;">
                    用户注册
                </div>
            </div>

            <div class="panel-body">
                <form action="" method="get" class="form-horizontal" name="myForm" novalidate>
                <div class="row" >
                    <div class="col-xs-3">
                        用户名:
                    </div>
                    <div class="col-xs-9">
                        <input type="text" class="form-control" ng-model="user.name" name="name" ng-minlength="4" ng-maxlength="10" required   ng-class="{suc:myForm.name.$valid && myForm.name.$dirty,err:myForm.name.$invalid && myForm.name.$dirty}"/>
                        <p style="color: red; margin: 0px;" ng-show="myForm.name.$invalid && myForm.name.$dirty">
                            <!--当有填写记录且不合法时,p显示-->
                            <span ng-show="myForm.name.$error.required">用户名必须填写!!!</span>
                            <span ng-show="myForm.name.$error.minlength">用户名最少包含4个字符!!!</span>
                            <span ng-show="myForm.name.$error.maxlength">用户名最多包含10个字符!!!</span>
                        </p>
                    </div>
                </div>

                <div class="row">
                    <div class="col-xs-3">
                        邮箱:
                    </div>
                    <div class="col-xs-9">
                        <input type="email" class="form-control" ng-model="user.mail" name="mail" required ng-class="{suc:myForm.mail.$valid && myForm.mail.$dirty,err:myForm.mail.$invalid && myForm.mail.$dirty}"/>
                        <p style="color: red; margin: 0px;" ng-show="myForm.mail.$invalid && myForm.mail.$dirty">
                            <!--当有填写记录且不合法时,p显示-->
                            <span ng-show="myForm.mail.$error.required">邮箱必须填写!!!</span>
                            <span ng-show="myForm.mail.$error.email">邮箱格式不合法!!!</span>
                        </p>
                    </div>
                </div>

                <div class="row">
                    <div class="col-xs-3">
                        密码:
                    </div>
                    <div class="col-xs-9">
                        <input type="password" class="form-control" ng-model="user.pwd" name="pwd" pattern="^\w{6,18}$" required ng-class="{suc:myForm.pwd.$valid && myForm.pwd.$dirty,err:myForm.pwd.$invalid && myForm.pwd.$dirty}"/>
                        <p style="color: red; margin: 0px;" ng-show="myForm.pwd.$invalid && myForm.pwd.$dirty">
                            <!--当有填写记录且不合法时,p显示-->
                            <span ng-show="myForm.pwd.$error.pattern">密码应为6-18位,且只能为字母、数字、下划线</span>
                        </p>
                    </div>

                </div>

                <div class="row">
                    <div class="col-xs-3">
                        确认密码:
                    </div>
                    <div class="col-xs-9">
                        <input type="password" class="form-control" ng-model="rePwd" name="rePwd" required ng-class="{suc:myForm.rePwd.$dirty&&rePwd==user.pwd,err:myForm.rePwd.$dirty&&rePwd!=user.pwd}"/>
                        <p style="color: red; margin: 0px;" ng-show="myForm.rePwd.$dirty && rePwd!=user.pwd">
                            <!--当有填写记录且不合法时,p显示-->
                            两次密码输入不一致!!!
                        </p>
                    </div>
                </div>

                <div class="row">
                    <div class="col-xs-5">
                        <input type="submit" value="注册" class="btn btn-success" ng-disabled="myForm.$invalid || rePwd!=user.pwd" />
                    </div>
                    <div class="col-xs-5">
                        <input type="button" value="重置" class="btn btn-warning" ng-click="resets()" />
                    </div>
                </div>
                </form>
            </div>
        </div>

    </div>

    </body>
    <script src="libs/angular.js"></script>

</html>
时间: 2024-10-20 12:27:57

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的表单验证

能够根据用户在表单中输入的内容给出实时视觉反馈是非常重要的.在人与人沟通的语境中,表单验证给出来的反馈同获得正确输入同等重要. 如果想要屏蔽浏览器对表单的默认验证行为,可以在表单元素上添加novalidate标记. <form name="form" novalidate><label name="email">Your email</label><input type="email"name="

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之表单验证

<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</