diff --git a/CHANGES.md b/CHANGES.md index b48cf28d3..8d0ad8676 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -49,6 +49,8 @@ Fixes - Fix ``pat-auto-scale`` not correctly rescaling after fullscreen changes. Fixes #673 - Fix heisenbug with pat-scroll on testruns. - Fix minimum input length default so that you can display select results already on click. +- Fix ``pat-validation`` to not skip ``pat-autosuggest`` inputs even though they're + hidden. Fixes #683 ## 3.0.0a5 - unreleased diff --git a/src/pat/validation/index.html b/src/pat/validation/index.html index 220969dd2..c5428f608 100644 --- a/src/pat/validation/index.html +++ b/src/pat/validation/index.html @@ -74,6 +74,10 @@ /> + +
diff --git a/src/pat/validation/tests.js b/src/pat/validation/tests.js index 55649b1ea..d18d05000 100644 --- a/src/pat/validation/tests.js +++ b/src/pat/validation/tests.js @@ -23,10 +23,30 @@ define(["pat-registry", "pat-validation"], function(registry, pattern) { '
'+ ''+ '
'); + pattern.init($el); $el.find(':input').trigger('change'); expect($el.find('em.warning').length).toBe(0); }); + it("validates required pat-autosuggest inputs on form submit", function() { + var $el = $( + '
'+ + ''+ + '
'); + pattern.init($el); + $el.submit(); + expect($el.find('em.warning').length).toBe(1); + + // Check that validation passes when required is not here. + $el = $( + '
'+ + ''+ + '
'); + pattern.init($el); + $el.submit(); + expect($el.find('em.warning').length).toBe(0); + }); + it("validates required inputs with HTML5 required attribute style", function() { var $el = $( '
'+ diff --git a/src/pat/validation/validation.js b/src/pat/validation/validation.js index 9ba72ffcc..7460b3d46 100644 --- a/src/pat/validation/validation.js +++ b/src/pat/validation/validation.js @@ -257,7 +257,7 @@ define([ // Ignore invisible elements (otherwise pat-clone template // elements get validated). Not aware of other cases where this // might cause problems. - var $single = this.$inputs.filter(':visible:enabled:not(:checkbox):not(:radio)'); + var $single = this.$inputs.filter(':visible:enabled:not(:checkbox):not(:radio), .pat-autosuggest:not(:visible)'); var group_names = this.$inputs .filter(':enabled:checkbox, :enabled:radio') .map(function () { return this.getAttribute('name'); });