angularJs 表单验证指令

简介:

AngularJS 前端验证指令

Java代码   收藏代码
  1. var rcSubmitDirective = {  
  2.   'rcSubmit': function ($parse) {  
  3.     return {  
  4.       restrict: "A",  
  5.       require: [ "rcSubmit""?form" ],  
  6.       controller: function() {  
  7.         this.attempted = false;  
  8.         var formController = null;  
  9.         this.setAttempted = function() {  
  10.           this.attempted = true;  
  11.         };  
  12.         this.setFormController = function(controller) {  
  13.           formController = controller;  
  14.         };  
  15.         this.needsAttention = function(fieldModelController) {  
  16.           if (!formController) return false;  
  17.           if (fieldModelController) {  
  18.             return fieldModelController.$invalid && (fieldModelController.$dirty || this.attempted);  
  19.           } else {  
  20.             return formController && formController.$invalid && (formController.$dirty || this.attempted);  
  21.           }  
  22.         };  
  23.       },  
  24.       compile: function() {  
  25.         return {  
  26.           pre: function(scope, formElement, attributes, controllers) {  
  27.             var submitController = controllers[0];  
  28.             var formController = controllers.length > 1 ? controllers[1] : null;  
  29.             submitController.setFormController(formController);  
  30.             scope.rc = scope.rc || {};  
  31.             scope.rc[attributes.name] = submitController;  
  32.           },  
  33.           post: function(scope, formElement, attributes, controllers) {  
  34.             var submitController = controllers[0];  
  35.             var formController = controllers.length > 1 ? controllers[1] : null;  
  36.             var fn = $parse(attributes.rcSubmit);  
  37.             formElement.bind("submit", function(event) {  
  38.               submitController.setAttempted();  
  39.               if (!scope.$$phase) scope.$apply();  
  40.               if (!formController.$valid) return;  
  41.               scope.$apply(function() {  
  42.                 fn(scope, {  
  43.                   $event: event  
  44.                 });  
  45.               });  
  46.             });  
  47.           }  
  48.         };  
  49.       }  
  50.     };  
  51.   }  
  52. };  

 验证通过

Java代码   收藏代码
  1. <form name="loginForm" novalidate  
  2.       ng-app="LoginApp" ng-controller="LoginController" rc-submit="login()">  
  3.     <div class="form-group"  
  4.          ng-class="{'has-error': rc.loginForm.needsAttention(loginForm.username)}">  
  5.         <input class="form-control" name="username" type="text"  
  6.                placeholder="Username" required ng-model="session.username" />  
  7.        <span class="help-block"  
  8.              ng-show="rc.form.needsAttention(loginForm.username) &amp;&amp; loginForm.username.$error.required">Required</span>  
  9.     </div>  
  10.     <div class="form-group"  
  11.          ng-class="{'has-error': rc.loginForm.needsAttention(loginForm.password)}">  
  12.         <input class="form-control" name="password" type="password"  
  13.                placeholder="Password" required ng-model="session.password" />  
  14.        <span class="help-block"  
  15.              ng-show="rc.form.needsAttention(loginForm.password) &amp;&amp; loginForm.password.$error.required">Required</span>  
  16.     </div>  
  17.     <div class="form-group">  
  18.         <button type="submit" class="btn btn-primary pull-right"  
  19.                 value="Login" title="Login">  
  20.             <span>Login</span>  
  21.         </button>  
  22.     </div>  
  23. </form>  

样式如下

 前端验证通过会调用login()

相关文章
|
7月前
|
JavaScript
AngularJS中的自定义指令:创建与使用技术详解
【4月更文挑战第27天】本文详细介绍了AngularJS中自定义指令的创建与使用。通过定义指令工厂函数并注册到模块中,可以创建自定义指令,如示例中的`myCustomDirective`。指令的属性(如`restrict`、`template`、`replace`)和方法(如`link`、`scope`)可定制其行为。在HTML中使用`restrict`指定的方式(如元素、属性等)来插入指令。遵循命名规范,避免直接DOM操作,使用隔离作用域和关注重用性与扩展性,能有效提升代码质量。自定义指令是AngularJS强大功能之一,有助于实现复杂DOM操作和组件复用。
|
JavaScript 前端开发
|
数据格式 JSON JavaScript
|
JavaScript 前端开发 移动开发
|
Web App开发 JavaScript 前端开发