]> git.ipfire.org Git - thirdparty/foundation/foundation-sites.git/commitdiff
Abide skip validation if no validatable fields 6882/head
authorCharney Kaye <charney@outright.io>
Fri, 11 Sep 2015 21:46:59 +0000 (17:46 -0400)
committerCharney Kaye <charney@outright.io>
Fri, 11 Sep 2015 22:28:09 +0000 (18:28 -0400)
js/foundation/foundation.abide.js
spec/abide/abide.js

index d2c2edb8494ddacb10b77121135f86debcdcf4f1..82b797cc6409b2b1c7ea22a62be6f43a970a9821 100644 (file)
     // TODO: Break this up into smaller methods, getting hard to read.
     check_validation_and_apply_styles : function (el_patterns) {
       var i = el_patterns.length,
-          validations = [],
-          form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),
+          validations = [];
+      if (i == 0) {
+        return validations;
+      }
+      var form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),
           settings = form.data(this.attr_name(true) + '-init') || {};
       while (i--) {
         var el = el_patterns[i][0],
index ecf290b93a42310d2350ec5d92f7da10a3916078..37d49ace373cd6a3409e4059482fbe40259fae56 100644 (file)
@@ -24,6 +24,25 @@ describe('abide:', function() {
       expect($('input[name="user_email"]')).not.toHaveData('invalid');
     });
 
+    it('should skip validation when there are no validatable fields', function() {
+      $(document).foundation();
+
+      $('input[name="user_name"]').val('Name').hide();
+      $('input[name="user_email"]').val('user@email.com').hide();
+
+      $('form').submit();
+
+      expect('valid.fndtn.abide').not.toHaveBeenTriggeredOn('form');
+      expect('valid').not.toHaveBeenTriggeredOn('input[name="user_name"]');
+      expect('valid').not.toHaveBeenTriggeredOn('input[name="user_email"]');
+      expect('invalid.fndtn.abide').not.toHaveBeenTriggeredOn('form');
+      expect('invalid').not.toHaveBeenTriggeredOn('input[name="user_name"]');
+      expect('invalid').not.toHaveBeenTriggeredOn('input[name="user_email"]');
+
+      $('input[name="user_name"]').show();
+      $('input[name="user_email"]').show();
+    });
+
     it('should trigger correct events for all required fields', function() {
       $(document).foundation();