AngularJS 表单验证

本篇文章出自AngularJS基础教程

1. 简介

  能够验证用户在表单中输入的内容是否合理与正确是十分重要的,而这个验证不能仅仅基于后端,因为对其中的内容实时反馈是很重要的,我们也必须在前端尽可能的保护后端。
  AngularJS能够将HTML5表单验证同它自己的验证指令结合起来使用。
  

2.如何实时响应

  1. AngularJS在处理表单时,会根据表单的状态自动添加一些CSS类。我们可以利用这些CSS类使用不同的样式提示用户表单目前的状态。

    CSS类何时自动添加
    ng-pristine表单没有做过修改时
    ng-dirty表单做过修改时
    ng-valid表单内容合法时
    ng-invalid表单内容非法时


  2. AngularJS在处理表单时,会根据表单的状态为表单及表单下面的元素添加一些属性,这些属性反映出了表但目前的状态,我们可以在HTML代码中利用这些属性实时提示用户,也可以在JS代码中监听这些属性以便实时相应。我们可以使用formName.property和fromName.inputField.property分别访问到表单和表单下面的元素的属性。

    属性名类型取值
    $pristine布尔型未修改为true,否则为false。
    $dirty布尔型修改过为true,否则为false。
    $valid布尔型验证正确为true,否则为false。
    $invalid布尔型验证错误为true,否则为true。

注意

  对于表单本身来说,只有表单下面所有的有效元素(使用了ng-model的元素)的值都验证正确,才会为form元素添加ng-valid类,才会为formName对象的$valid属性设置为true,否则,就会添加ng-invalid以及设置$valide属性为false。表单是否修改也同理。
  另外,我们无法获取到表单下的无效元素(没用ng-model的元素),因为我们没必要获取它们的状态。
  下面的例子演示了在表单中有ng-model的有效元素和没有ng-model的无效元素的区别。

<body ng-app="myApp" ng-controller="myController">
    <form  name="myForm" novalidate>
        <input type="text" placeholder="在此输入账号" ng-minlength="5" ng-maxlength="16" ng-model="a"/>
        <br/><br/>
        <input type="text" placeholder="在此输入密码" ng-minlength="5" ng-maxlength="16"/>
        <br/><br/>
        <button type="submit">Submit</button>
    </form>
    <script>
        var app = angular.module("myApp",[]);
        app.controller("myController", function () {
                });
    </script>
</body> 

这里写图片描述

3.验证选项

  • 必填项
    验证某个表单输入是否填写,只要在输入字段元素上添加HTML5标记required即可。
<form>
    <input type="text" placeholder="在此输入" required/>
    <button type="submit">Submit</button>
</form>

  如果没有填写,点击了Submit按钮效果如下,这是由谷歌浏览器提供的默认验证,可以在form元素加上novalidate关键字禁用浏览器的默认验证,后面我们会讲怎么进行自定义验证。
这里写图片描述

  • 长度限制
    我们可以用ng-minlength和ng-maxlength指令来指定表单输入的最小长度和最大长度。
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值