From: Charney Kaye Date: Fri, 11 Sep 2015 21:46:59 +0000 (-0400) Subject: Abide skip validation if no validatable fields X-Git-Tag: v5.5.3~30^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F6882%2Fhead;p=thirdparty%2Ffoundation%2Ffoundation-sites.git Abide skip validation if no validatable fields --- diff --git a/js/foundation/foundation.abide.js b/js/foundation/foundation.abide.js index d2c2edb84..82b797cc6 100644 --- a/js/foundation/foundation.abide.js +++ b/js/foundation/foundation.abide.js @@ -217,8 +217,11 @@ // 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], diff --git a/spec/abide/abide.js b/spec/abide/abide.js index ecf290b93..37d49ace3 100644 --- a/spec/abide/abide.js +++ b/spec/abide/abide.js @@ -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();