From e2e1b506dd6d4f0f3596340413330ef439446230 Mon Sep 17 00:00:00 2001 From: simshaun Date: Mon, 18 Jul 2011 20:48:59 -0400 Subject: [PATCH] Added 2 new options: - appendToError [default: false] - prependToError [default: false] If specified, they will append or prepend content within all error elements. They accept anything that jQuery's .prepend and .append methods accept. These options are useful when making themed errors (e.g. speech bubbles) and need elements in your error containers to represent things (e.g. speech bubble arrow). --- jquery.validate.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/jquery.validate.js b/jquery.validate.js index f2eb3f8ed..596b73e0d 100644 --- a/jquery.validate.js +++ b/jquery.validate.js @@ -205,6 +205,8 @@ $.extend($.validator, { errorClass: "error", validClass: "valid", errorElement: "label", + appendToError: false, + prependToError: false, focusInvalid: true, errorContainer: $( [] ), errorLabelContainer: $( [] ), @@ -631,13 +633,23 @@ $.extend($.validator, { label.removeClass().addClass( this.settings.errorClass ); // check if we have a generated label, replace the message then - label.attr("generated") && label.html(message); + if (label.attr("generated")) { + label.html(message); + if ( this.settings.appendToError ) + label.append( this.settings.appendToError ); + if ( this.settings.prependToError ) + label.prepend( this.settings.prependToError ); + } } else { // create label label = $("<" + this.settings.errorElement + "/>") .attr({"for": this.idOrName(element), generated: true}) .addClass(this.settings.errorClass) .html(message || ""); + if ( this.settings.appendToError ) + label.append( this.settings.appendToError ); + if ( this.settings.prependToError ) + label.prepend( this.settings.prependToError ); if ( this.settings.wrapper ) { // make sure the element is visible, even in IE // actually showing the wrapped element is handled elsewhere