这篇文章主要介绍了AngularJS手动表单验证的相关资料,AngularJS的表单验证大致有两种,一种是手动验证,一种是自动验证,本文重点介绍AngularJS自动表单验证,感兴趣的小伙伴们可以参考一下
AngularJS的另外一种表单验证方式是自动验证,即通过directive来实现,除了AngularJS自带的directive,还需要用到angular-auto-validate这个第三方module。
有关angular-auto-validate:
- 安装:npm i angular-auto-validate
- 引用:
- module依赖:var myApp = angular.module(“app”, [“jcs-autoValidate”]);
为了实现错误信息本地化,还需要angular-localize这个第三方module:
- 安装:npm install angular-localize –save
- module依赖:var myApp = angular.module(“app”, [“localize”]);
- 引用:
此外,当点击提交表单按钮,需要禁用按钮并显示一种等待效果,需要用到angular-ladda这个第三方module:
- 安装:bower install angular-ladda –save
- module依赖:var myApp = angular.module(“app”, [“angular-ladda”]);
- 引用:
页面如下:
<title></title> <nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> Form Validating Auto</div></div></nav><div class="container main-content"> <!--novalidate让表单不要使用html验证--><!--theForm变成scope的一个字段--> <div class="form-group"> <label for="name" class="control-label">Name</label></div><div class="form-group"> <label for="email" class="control-label">Email</label></div><div class="form-group"> <label for="username" class="control-label">Username</label></div><div class="form-group"> <label for="age" class="control-label">Age</label></div><div class="form-group"> <label for="sex" class="control-label">Sex</label> Please chooseMailFemail</div><div class="form-group"> <label for="password" class="control-label">Password</label></div><div class="form-group"> <!--<button class="btn btn-primary">Register</button>--><button class="btn btn-primary" type="submit"> <span>正在注册...</span><span>注册</span></button></div><pre class="prettyprint linenums"> {{formModel | json}}
先看提交按钮:
<div class="form-group"> <!--<button class="btn btn-primary">Register</button>--><button class="btn btn-primary" type="submit"> <span>正在注册...</span><span>注册</span></button></div>
- ladda属性值为bool值,true表示显示动态等待效果,false不显示动态等待效果,这里的submitting是scope中的一个属性
- data-style=”expand-right”表示在按钮的右侧显示动态等待效果
再拿表单中的Age字段来说:
<div class="form-group"> <label for="age" class="control-label">Age</label></div>
其中,min, max为AgularJS的directive,而ng-min-err-type是angular-auto-validate的directive。这里遵循的惯例是ng-AngularJS表单验证的directive名称-err-type,而tooYoung和tooOld的作用是什么,又是在哪里用上了呢?
是在module层面用上了,定义在了form_validation_auto.js文件中。
var myApp1 = angular.module('myApp1',['jcs-autoValidate','localize','angular-ladda']); myApp1.run(function(defaultErrorMessageResolver){ defaultErrorMessageResolver.getErrorMessages().then(function(errorMessages){ errorMessages['tooYoung'] = '年龄必须小于{0}'; errorMessages['tooOld'] = '年龄不能大于{0}'; errorMessages['badUsername'] = '用户<strong style="color:transparent">来源gaodai#ma#com搞@代~码网</strong>名只能包含数字、字母或下划线'; }); }); myApp1.controller('myCtrl1', function($scope, $http){ $scope.formModel = {}; $scope.submitting = false; $scope.onSubmit = function(){ $scope.submitting = true; console.log('已提交'); console.log($scope.formModel); $http.post('url',$scope.formModel) .success(function(data){ console.log(':)'); $scope.submitting = false; }) .error(function(data){ console.log(':('); $scope.submitting = false; }); }; });
以上就是本文的全部内容,希望对AngularJS手动表单验证能够熟练操作。