diff --git a/changelog.txt b/changelog.txt index f7163c15c..133c03839 100644 --- a/changelog.txt +++ b/changelog.txt @@ -13,6 +13,7 @@ * Fixed #184 - resetForm: should unset lastElement * Fixed #71 - improve existing time method and add time12h method for 12h am/pm time format * Fixed #177 - Fix validation of a single radio or checkbox input +* Fixed #189 - :hidden elements are now ignored by default 1.8.1 --- diff --git a/jquery.validate.js b/jquery.validate.js index 1b1ae92ac..3eceb85f1 100644 --- a/jquery.validate.js +++ b/jquery.validate.js @@ -214,7 +214,7 @@ $.extend($.validator, { errorContainer: $( [] ), errorLabelContainer: $( [] ), onsubmit: true, - ignore: [], + ignore: ":hidden", ignoreTitle: false, onfocusin: function(element) { this.lastActive = element; diff --git a/test/test.js b/test/test.js index d06197c09..cbaa489dc 100644 --- a/test/test.js +++ b/test/test.js @@ -1159,3 +1159,30 @@ test("validate radio on click", function() { trigger(e1); errors(0); }); + +test("ignore hidden elements", function(){ + var form = $('#userForm'); + var validate = form.validate({ + rules:{ + "username": "required" + } + }); + form.get(0).reset(); + ok(! validate.form(), "form should be initially invalid"); + $('#userForm [name=username]').hide(); + ok(validate.form(), "hidden elements should be ignored by default"); +}); + +test("ignore hidden elements at start", function(){ + var form = $('#userForm'); + var validate = form.validate({ + rules:{ + "username": "required" + } + }); + form.get(0).reset(); + $('#userForm [name=username]').hide(); + ok(validate.form(), "hidden elements should be ignored by default"); + $('#userForm [name=username]').show(); + ok(! validate.form(), "form should be invalid when required element is visible"); +});