Add a different class to your label then errorClass. Then the plugin won't try to hide.
Jörn On Mon, Mar 9, 2009 at 10:21 PM, Trixster <joshmda...@gmail.com> wrote: > > I have found a possible bug and a possible solution. When I validate > my form select box, its label goes red (gets the error class added) as > does the element itself. When I update my selected value, the label > disappears altogether. > > Work around: > errorElement: "em", > If I set errorElement to something other than label I get the expected > result (label remains and error class is removed). > > I decided to have a quick look at your source code and found that the > change shown below to the errorsFor function filters out any non- > generated labels from being removed. > > You may have a better solution, if you do please share :). > I hope this helps someone else. > > > // > ******************************************************************************************************************************* > // Filename: jquery.validate.js > // > ******************************************************************************************************************************* > Original Code: > errorsFor: function(element) { > return this.errors().filter("[for='" + > this.idOrName(element) + > "']"); > }, > Suggested Code: > errorsFor: function(element) { > return this.errors().filter("[generated][for='" + > this.idOrName > (element) + "']"); > }, > > > // > ******************************************************************************************************************************* > // Example validator: > // > ******************************************************************************************************************************* > > jQuery.validator.messages.required = ""; > $("#criteriaForm").validate({ > invalidHandler: function(form, validator) { > var errors = validator.numberOfInvalids(); > if (errors) { > var message = errors == 1 > ? 'You missed 1 field. It has been highlighted' > : 'You missed ' + errors + ' fields. They have been > highlighted'; > $("div.errorText span").html(message); > $("div.errorText").show(); > } else { > $("div.errorText").hide(); > } > }, > highlight: function(element, errorClass) { > $(element).addClass(errorClass); > $(element.form).find("label[for=" + element.id + "]") > .addClass(errorClass); > }, > unhighlight: function(element, errorClass) { > $(element).removeClass(errorClass); > $(element.form).find("label[for=" + element.id + "]") > .removeClass(errorClass); > }, > ignoreTitle: true, > //errorElement: "em", > > rules: { > selMyAnswer: { > required: true > } > } > > > }); > > // > ******************************************************************************************************************************* > // Example HTML: > // > ******************************************************************************************************************************* > <label for="selReviewerConcerns"><br />This is the label > that gets highlighted when there is nothing selected?</label><br /> > <select name="selMyAnswer" id="selMyAnswer"> > <option value="" - Specify -</option> > <option value="Y">Yes</option> > <option value="N" >No</option> > </select> > >