详细解读AngularJS中的表单验证编程

    Name 必填

    Username 非必填,最小长度3,最大长度8

    Email 非必填,但必须是合法的email

    验证未通过的表单不能提交

    显示一个必填或者非法email格式的错误信息

    如果正确提交就弹出一个祝贺信息

现在知道我们的目标了吧,让我们一起来构建这个东西吧.

Angular 的表单属性 $valid, $invalid, $pristine, $dirty

Angular 提供了有关表单的属性来帮助我们验证表单. 他们给我们提供了各种有关一个表单及其输入的信息,并且应用到了表单和输入.
属性类  
 描述

$valid  ng-valid  Boolean 告诉我们这一项当前基于你设定的规则是否验证通过

$invalid  ng-invalid  Boolean 告诉我们这一项当前基于你设定的规则是否验证未通过

$pristine  ng-pristine  Boolean 如果表单或者输入框没有使用则为True

$dirty  ng-dirty  Boolean 如果表单或者输入框有使用到则为True

Angular 也提供了有关表单及其输入框的类,以便你能够依据每一个状态设置其样式.
访问表单属性

    方位表单: <form name>.<angular property>

    访问一个输入框: <form name>.<input name>.<angular property>

设置我们的表单

我们将使用一个简单的表单来做演示.

201561995404669.png (765×364)

我们将需要两个文件:

    index.html 我们用来显示表单的代码

    app.js 我们的Angular应用程序和控制器 (几乎没有任何代码)

Our Form Code index.html
 

<!-- index.html --> <!DOCTYPE html> <html> <head> <!-- CSS ===================== --> <!-- load bootstrap --> <link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css"> <style> body { padding-top:30px; } </style> <!-- JS ===================== --> <!-- load angular --> <script src="https://code.angularjs.org/1.2.6/angular.js"></script> <script src="https://www.jb51.net/article/app.js"></script> </head> <!-- apply angular app and controller to our body --> <body ng-app="validationApp" ng-controller="mainController"> <div> <div> <!-- PAGE HEADER --> <div><h1>AngularJS Form Validation</h1></div> <!-- FORM --> <!-- pass in the variable if our form is valid or invalid --> <form ng-submit="submitForm(userForm.$valid)" novalidate> <!-- novalidate prevents HTML5 validation since we will be validating ourselves --> <!-- NAME --> <div> <label>Name</label> <input type="text" ng-model="name" required> </div> <!-- USERNAME --> <div> <label>Username</label> <input type="text" ng-model="user.username" ng-minlength="3" ng-maxlength="8"> </div> <!-- EMAIL --> <div> <label>Email</label> <input type="email" ng-model="email"> </div> <!-- SUBMIT BUTTON --> <button type="submit">Submit</button> </form> </div><!-- col-sm-8 --> </div><!-- /container --> </body> </html>

这里列出了一些关键点:

    novalidate: 它将会组织默认的HTML5验证,因为这会由我们自己来做(我们自己的将会更棒)

    我们在输入框上应用了ng-model,以便将来自表单的数据绑定到angular变量

    username上的ng-minlength 和 ng-maxlength会自己创建其规则

    name 输入框是必填的

    email 输入框有属性 type=”email”


验证规则

Angular 有很多验证规则,像是 tong-min leng than dng-max length.

Angular还可以自己配置规则.  Angular输入指引上有说明 .
 

<input ng-model="{ string }" required ng-required="{ boolean }" ng-minlength="{ number }" ng-maxlength="{ number }" ng-pattern="{ string }" ng-change="{ string }"> </input>

现在建好了表单, 接着创建Angular应用和控制器,ng-app ng-控制器.
应用的 Codeapp.js

// app.js // create angular app var validationApp = angular.module('validationApp', []); // create angular controller validationApp.controller('mainController', function($scope) { // function to submit the form after all validation has occurred $scope.submitForm = function(isValid) { // check to make sure the form is completely valid if (isValid) { alert('our form is amazing'); } }; });

 
使HTML5验证器的novalidate

我们将在我们的表单使用novalidate。这是一个很好的做法,因为我们将会自己处理验证。如果我们让我们的表单这样做,它看起来很丑陋。

201561995443961.png (641×170)

禁用提交按钮 ng-disabled

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgdxyy.html