From 95624dec587ddc2870f241eb941a9486f0030a1a Mon Sep 17 00:00:00 2001 From: Charney Kaye Date: Fri, 11 Sep 2015 17:46:59 -0400 Subject: [PATCH] Abide skip validation if no validatable fields --- js/foundation/foundation.abide.js | 7 +++++-- spec/abide/abide.js | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) 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(); -- 2.47.2