当前位置:Gxlcms > JavaScript > 详细解读AngularJS中的表单验证编程_AngularJS

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

时间:2021-07-01 10:21:17 帮助过:2人阅读

需求

  • 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 也提供了有关表单及其输入框的类,以便你能够依据每一个状态设置其样式.
访问表单属性

  • 方位表单:

这里列出了一些关键点:


验证规则

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

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

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


使HTML5验证器的novalidate

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

201561995443961.png (641×170)

禁用提交按钮 ng-disabled

现在真正的好戏上演了。我们开始使用Angular的属性 。首先让我们禁用我们的提交按钮。如果我们的表单是$invalid的,我们只想禁用它。

只使用一点代码(ng-disabled),如果我们的表单是$invalid的,表单按钮将被禁用。
这意味着,我们的name input 字段是必需的,并且email input字段需要一个有效的电子邮件。

用 eng-show显示错误信息

ng-valid 和ng-invalid 会基于提供的表单规则自动验证输入的有效性.

咱们在输入部分加一些错误信息,只要不等于$valid或是已经使用过的就行 (不能展示还没使用).

就像这样 Angular 会根据规则来验证输入部分的$invalid 和 $pristine properties属性从而决定是否显示错误信息.

201561995503615.png (799×437)

格局类

Angular在验证输入或表单时的有效有否是已经提供了一些类,像是 (ng-valid,ng-invalid,ng-pristineandng-dirty).

你可以编辑自己喜欢的CSS . 你可以私有定制化这些类来实现特定的场景应用.

使用 ng-class 根据条件添加类

因为我们使用了 Bootstrap, 我们将就使用它们提供的类(has-error). 这样就能围绕我们的form-group获得漂亮的错误信息和颜色.

ng-class 允许我们基于一个表达式添加类. 在这种情况下,我们想要想我们的form-group添加一个 has-error 类,如果输入框的状态是$invalid或者不是pristine的话.

其工作的方式是 ng-class="{ : }". 更多的信息,请读一读 Angular ngClass 文档吧.


现在我们的表单就有了恰当的Bootstrap错误类.

201561995526100.png (770×449)

只在提交表单后显示错误信息

有时候不想在用户正在输入的时候显示错误信息. 当前错误信息会在用户输入表单时立即显示. 由于Angular很棒的数据绑定特性,这是可以发生的. 因为所有的事务都可以在一瞬间发生改变,这在表单验证时会有副作用.

对于你想要只在表单正要提交之后才显示错误消息的场景, 你就需要对上面的代码做一些小调整.

现在,只有在submitted变量被设置为true时才会显示错误信息.

只有在输入框之外点击时才显示错误消息

只有在输入框之外点击时才显示错误消息(也被叫做失去焦点 blur) 这一需求比在提交时验证要复杂一点. 在失去焦点时验证表单需要一个custom指令. 这是一个可以让你操作DOM的指令.

我们正在写一篇文章专门讨论此话题。同时,还有其他的一些资源讨论了创建custom指令来处理失去焦点的情况:

全部完成

现在一旦我们正确填写了所有的信息,我们的表单提交按钮就能使用了. 一旦我们提交了表单,我们将会见到我们设置的弹出消息.

201561995546318.png (376×169)

用了几行我们就可以:

如你所见,我们使用了Angular内置的表单验证技术来创建一个客户端验证表单.

人气教程排行