AngularJSAngularJs表单验证

转载请注脚出处 http://www.023996.cn/hyxw/s1129.html

Anjularjs表单验证

  能够根据用户在表单中输入的始末给出实时视觉反馈是那些关键的。在人与人联系的语境中,表单验证给出去的举报同得到不错输入同等首要。

  表单验证不仅能给用户提供可行的申报,同时也能爱护我们的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>

要采用表单验证,首先要确认保证表单像下边包车型大巴例子1样有三个 name 属性。

  全数输入字段都足以拓展着力的注解,比如最大、最小长度等。这个功用是由新的HTML五表单属性提供的。

  假诺想要屏蔽浏览器对表单的默许验证行为,可以在表单成分上添加
novalidate 标记

 

  1. 必填项 required 

  验证某些表单输入是不是已填写,只要在输入字段成分上添加HTML伍符号
required 即可:

  注释:required 属性适用于以下
<input> 类型:text, search, url, telephone, email, password, date
pickers, number, checkbox, radio 以及 file

<input type="text" required />

   

  二. 微细长度 ng-minleng=”{number}”

  验证表单输入的文件长度是不是超越某些最小值,在输入字段上使用AngularJS指令
ng-minleng=”{number}” 

<input type="text" ng-minlength="5" />

AngularJS, 

  3. 最大尺寸 ng-maxlength=”{number}” 

  验证表单输入的公文长度是还是不是低于或等于有些最大值,在输入字段上应用AngularJS指令
ng-maxlength=”{number}” 

<input type="text" ng-maxlength="20" />

 

  4. 情势相配  ng-pattern=”/PATTE福睿斯N/”

  使用 ng-pattern=”/PATTE揽胜N/” 来确认保障输入可以包容钦赐的正则表明式:

<input type="text" ng-pattern="[a-zA-Z]" />

  

  伍. 电子邮件

  验证输入内容是或不是是电子邮件,只要像下边那样将 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

  验证输入内容是或不是是UPAJEROL,将 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 数组中的函数会以流水生产线的款式被每一种调用。第2个$parse 被调用后,执行结果会传递给第1个 $parse ,以此类推

  那么些函数能够对输入值举办转换,大概经过 $setValidity()
函数设置表单的合法性。

  使用 $parsers 数组是贯彻自定义表明的路子之壹。

  例如,即使我们想要确定保证输入值在某七个数值之间,能够在 $parsers
数组中入栈1个新的函数,那么些函数会在验证链中被调用。

  各样 $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>
    <div ng-controller="TestController">
        <form name="testForm">
            <input type="number" name="inputs" ng-test ng-model="obj.number">
            good
            bad
            <div>{{ testForm.inputs.$valid }}</div>
            <div>{{ testForm.inputs.$invalid }}</div>
            <div>{{ obj.number }}</div>
        </form>
    </div>
    <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
                }
            })
        }
    }
});

 

相关文章