首页 > web前端 > js教程 > 正文

AngularJs表单验证的方法

一个新手
发布: 2017-10-19 09:25:29
原创
1577 人浏览过

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>
登录后复制

要使用表单验证,首先要确保表单像上面的例子一样有一个 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(&#39;myApp&#39;, []).controller(&#39;TestController&#39;, function($scope) {
    $scope.obj = {
        number: 34
    }
}).directive(&#39;ngTest&#39;, function() {    
return {
        require: &#39;?ngModel&#39;,
        restrict: &#39;AE&#39;,
        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(&#39;test&#39;, true);                    
                    return viewValue
                } else {
                    ngModel.$setValidity(&#39;test&#39;, false);                    
                    return undefined
                }
            })
        }
    }
});
登录后复制

以上是AngularJs表单验证的方法的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!