assets/js/jqBootstrapValidation.js in jekyll-agency-1.1.0 vs assets/js/jqBootstrapValidation.js in jekyll-agency-1.2.0
- old
+ new
@@ -6,12 +6,11 @@
* License: MIT <http://opensource.org/licenses/mit-license.php> - see LICENSE file
*
* http://ReactiveRaven.github.com/jqBootstrapValidation/
*/
-(function($) {
-
+(function ($) {
var createdElements = [];
var defaults = {
options: {
prependExistingHelpBlock: false,
@@ -19,44 +18,48 @@
preventSubmit: true, // stop the form submit event from firing if validation fails
submitError: false, // function called if there is an error when trying to submit
submitSuccess: false, // function called just before a successful submit event is sent to the server
semanticallyStrict: false, // set to true to tidy up generated HTML output
autoAdd: {
- helpBlocks: true
+ helpBlocks: true,
},
- filter: function() {
+ filter: function () {
// return $(this).is(":visible"); // only validate elements you can see
return true; // validate everything
- }
+ },
},
methods: {
- init: function(options) {
-
+ init: function (options) {
var settings = $.extend(true, {}, defaults);
settings.options = $.extend(true, settings.options, options);
var $siblingElements = this;
var uniqueForms = $.unique(
- $siblingElements.map(function() {
- return $(this).parents("form")[0];
- }).toArray()
+ $siblingElements
+ .map(function () {
+ return $(this).parents("form")[0];
+ })
+ .toArray()
);
- $(uniqueForms).bind("submit", function(e) {
+ $(uniqueForms).bind("submit", function (e) {
var $form = $(this);
var warningsFound = 0;
- var $inputs = $form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter);
- $inputs.trigger("submit.validation").trigger("validationLostFocus.validation");
+ var $inputs = $form
+ .find("input,textarea,select")
+ .not("[type=submit],[type=image]")
+ .filter(settings.options.filter);
+ $inputs
+ .trigger("submit.validation")
+ .trigger("validationLostFocus.validation");
- $inputs.each(function(i, el) {
+ $inputs.each(function (i, el) {
var $this = $(el),
$controlGroup = $this.parents(".form-group").first();
- if (
- $controlGroup.hasClass("warning")
- ) {
+ if ($controlGroup.hasClass("warning")) {
$controlGroup.removeClass("warning").addClass("error");
warningsFound++;
}
});
@@ -66,33 +69,40 @@
if (settings.options.preventSubmit) {
e.preventDefault();
}
$form.addClass("error");
if ($.isFunction(settings.options.submitError)) {
- settings.options.submitError($form, e, $inputs.jqBootstrapValidation("collectErrors", true));
+ settings.options.submitError(
+ $form,
+ e,
+ $inputs.jqBootstrapValidation("collectErrors", true)
+ );
}
} else {
$form.removeClass("error");
if ($.isFunction(settings.options.submitSuccess)) {
settings.options.submitSuccess($form, e);
}
}
});
- return this.each(function() {
-
+ return this.each(function () {
// Get references to everything we're interested in
var $this = $(this),
$controlGroup = $this.parents(".form-group").first(),
$helpBlock = $controlGroup.find(".help-block").first(),
$form = $this.parents("form").first(),
validatorNames = [];
// create message container if not exists
- if (!$helpBlock.length && settings.options.autoAdd && settings.options.autoAdd.helpBlocks) {
+ if (
+ !$helpBlock.length &&
+ settings.options.autoAdd &&
+ settings.options.autoAdd.helpBlocks
+ ) {
$helpBlock = $('<div class="help-block" />');
- $controlGroup.find('.controls').append($helpBlock);
+ $controlGroup.find(".controls").append($helpBlock);
createdElements.push($helpBlock[0]);
}
// =============================================================
// SNIFF HTML FOR VALIDATORS
@@ -104,88 +114,129 @@
var message = "";
// ---------------------------------------------------------
// PATTERN
// ---------------------------------------------------------
if ($this.attr("pattern") !== undefined) {
- message = "Not in the expected format<!-- data-validation-pattern-message to override -->";
+ message =
+ "Not in the expected format<!-- data-validation-pattern-message to override -->";
if ($this.data("validationPatternMessage")) {
message = $this.data("validationPatternMessage");
}
$this.data("validationPatternMessage", message);
$this.data("validationPatternRegex", $this.attr("pattern"));
}
// ---------------------------------------------------------
// MAX
// ---------------------------------------------------------
- if ($this.attr("max") !== undefined || $this.attr("aria-valuemax") !== undefined) {
- var max = ($this.attr("max") !== undefined ? $this.attr("max") : $this.attr("aria-valuemax"));
- message = "Too high: Maximum of '" + max + "'<!-- data-validation-max-message to override -->";
+ if (
+ $this.attr("max") !== undefined ||
+ $this.attr("aria-valuemax") !== undefined
+ ) {
+ var max =
+ $this.attr("max") !== undefined
+ ? $this.attr("max")
+ : $this.attr("aria-valuemax");
+ message =
+ "Too high: Maximum of '" +
+ max +
+ "'<!-- data-validation-max-message to override -->";
if ($this.data("validationMaxMessage")) {
message = $this.data("validationMaxMessage");
}
$this.data("validationMaxMessage", message);
$this.data("validationMaxMax", max);
}
// ---------------------------------------------------------
// MIN
// ---------------------------------------------------------
- if ($this.attr("min") !== undefined || $this.attr("aria-valuemin") !== undefined) {
- var min = ($this.attr("min") !== undefined ? $this.attr("min") : $this.attr("aria-valuemin"));
- message = "Too low: Minimum of '" + min + "'<!-- data-validation-min-message to override -->";
+ if (
+ $this.attr("min") !== undefined ||
+ $this.attr("aria-valuemin") !== undefined
+ ) {
+ var min =
+ $this.attr("min") !== undefined
+ ? $this.attr("min")
+ : $this.attr("aria-valuemin");
+ message =
+ "Too low: Minimum of '" +
+ min +
+ "'<!-- data-validation-min-message to override -->";
if ($this.data("validationMinMessage")) {
message = $this.data("validationMinMessage");
}
$this.data("validationMinMessage", message);
$this.data("validationMinMin", min);
}
// ---------------------------------------------------------
// MAXLENGTH
// ---------------------------------------------------------
if ($this.attr("maxlength") !== undefined) {
- message = "Too long: Maximum of '" + $this.attr("maxlength") + "' characters<!-- data-validation-maxlength-message to override -->";
+ message =
+ "Too long: Maximum of '" +
+ $this.attr("maxlength") +
+ "' characters<!-- data-validation-maxlength-message to override -->";
if ($this.data("validationMaxlengthMessage")) {
message = $this.data("validationMaxlengthMessage");
}
$this.data("validationMaxlengthMessage", message);
- $this.data("validationMaxlengthMaxlength", $this.attr("maxlength"));
+ $this.data(
+ "validationMaxlengthMaxlength",
+ $this.attr("maxlength")
+ );
}
// ---------------------------------------------------------
// MINLENGTH
// ---------------------------------------------------------
if ($this.attr("minlength") !== undefined) {
- message = "Too short: Minimum of '" + $this.attr("minlength") + "' characters<!-- data-validation-minlength-message to override -->";
+ message =
+ "Too short: Minimum of '" +
+ $this.attr("minlength") +
+ "' characters<!-- data-validation-minlength-message to override -->";
if ($this.data("validationMinlengthMessage")) {
message = $this.data("validationMinlengthMessage");
}
$this.data("validationMinlengthMessage", message);
- $this.data("validationMinlengthMinlength", $this.attr("minlength"));
+ $this.data(
+ "validationMinlengthMinlength",
+ $this.attr("minlength")
+ );
}
// ---------------------------------------------------------
// REQUIRED
// ---------------------------------------------------------
- if ($this.attr("required") !== undefined || $this.attr("aria-required") !== undefined) {
+ if (
+ $this.attr("required") !== undefined ||
+ $this.attr("aria-required") !== undefined
+ ) {
message = settings.builtInValidators.required.message;
if ($this.data("validationRequiredMessage")) {
message = $this.data("validationRequiredMessage");
}
$this.data("validationRequiredMessage", message);
}
// ---------------------------------------------------------
// NUMBER
// ---------------------------------------------------------
- if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "number") {
+ if (
+ $this.attr("type") !== undefined &&
+ $this.attr("type").toLowerCase() === "number"
+ ) {
message = settings.builtInValidators.number.message;
if ($this.data("validationNumberMessage")) {
message = $this.data("validationNumberMessage");
}
$this.data("validationNumberMessage", message);
}
// ---------------------------------------------------------
// EMAIL
// ---------------------------------------------------------
- if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "email") {
- message = "Not a valid email address<!-- data-validator-validemail-message to override -->";
+ if (
+ $this.attr("type") !== undefined &&
+ $this.attr("type").toLowerCase() === "email"
+ ) {
+ message =
+ "Not a valid email address<!-- data-validator-validemail-message to override -->";
if ($this.data("validationValidemailMessage")) {
message = $this.data("validationValidemailMessage");
} else if ($this.data("validationEmailMessage")) {
message = $this.data("validationEmailMessage");
}
@@ -193,27 +244,39 @@
}
// ---------------------------------------------------------
// MINCHECKED
// ---------------------------------------------------------
if ($this.attr("minchecked") !== undefined) {
- message = "Not enough options checked; Minimum of '" + $this.attr("minchecked") + "' required<!-- data-validation-minchecked-message to override -->";
+ message =
+ "Not enough options checked; Minimum of '" +
+ $this.attr("minchecked") +
+ "' required<!-- data-validation-minchecked-message to override -->";
if ($this.data("validationMincheckedMessage")) {
message = $this.data("validationMincheckedMessage");
}
$this.data("validationMincheckedMessage", message);
- $this.data("validationMincheckedMinchecked", $this.attr("minchecked"));
+ $this.data(
+ "validationMincheckedMinchecked",
+ $this.attr("minchecked")
+ );
}
// ---------------------------------------------------------
// MAXCHECKED
// ---------------------------------------------------------
if ($this.attr("maxchecked") !== undefined) {
- message = "Too many options checked; Maximum of '" + $this.attr("maxchecked") + "' required<!-- data-validation-maxchecked-message to override -->";
+ message =
+ "Too many options checked; Maximum of '" +
+ $this.attr("maxchecked") +
+ "' required<!-- data-validation-maxchecked-message to override -->";
if ($this.data("validationMaxcheckedMessage")) {
message = $this.data("validationMaxcheckedMessage");
}
$this.data("validationMaxcheckedMessage", message);
- $this.data("validationMaxcheckedMaxchecked", $this.attr("maxchecked"));
+ $this.data(
+ "validationMaxcheckedMaxchecked",
+ $this.attr("maxchecked")
+ );
}
}
// =============================================================
// COLLECT VALIDATOR NAMES
@@ -223,11 +286,11 @@
if ($this.data("validation") !== undefined) {
validatorNames = $this.data("validation").split(",");
}
// Get extra ones defined on the element's data attributes
- $.each($this.data(), function(i, el) {
+ $.each($this.data(), function (i, el) {
var parts = i.replace(/([A-Z])/g, ",$1").split(",");
if (parts[0] === "validation" && parts[1]) {
validatorNames.push(parts[1]);
}
});
@@ -240,107 +303,129 @@
var newValidatorNamesToInspect = [];
do // repeatedly expand 'shortcut' validators into their real validators
{
// Uppercase only the first letter of each name
- $.each(validatorNames, function(i, el) {
+ $.each(validatorNames, function (i, el) {
validatorNames[i] = formatValidatorName(el);
});
// Remove duplicate validator names
validatorNames = $.unique(validatorNames);
// Pull out the new validator names from each shortcut
newValidatorNamesToInspect = [];
- $.each(validatorNamesToInspect, function(i, el) {
+ $.each(validatorNamesToInspect, function (i, el) {
if ($this.data("validation" + el + "Shortcut") !== undefined) {
// Are these custom validators?
// Pull them out!
- $.each($this.data("validation" + el + "Shortcut").split(","), function(i2, el2) {
- newValidatorNamesToInspect.push(el2);
- });
+ $.each(
+ $this.data("validation" + el + "Shortcut").split(","),
+ function (i2, el2) {
+ newValidatorNamesToInspect.push(el2);
+ }
+ );
} else if (settings.builtInValidators[el.toLowerCase()]) {
// Is this a recognised built-in?
// Pull it out!
var validator = settings.builtInValidators[el.toLowerCase()];
if (validator.type.toLowerCase() === "shortcut") {
- $.each(validator.shortcut.split(","), function(i, el) {
+ $.each(validator.shortcut.split(","), function (i, el) {
el = formatValidatorName(el);
newValidatorNamesToInspect.push(el);
validatorNames.push(el);
});
}
}
});
validatorNamesToInspect = newValidatorNamesToInspect;
+ } while (validatorNamesToInspect.length > 0);
- } while (validatorNamesToInspect.length > 0)
-
// =============================================================
// SET UP VALIDATOR ARRAYS
// =============================================================
var validators = {};
- $.each(validatorNames, function(i, el) {
+ $.each(validatorNames, function (i, el) {
// Set up the 'override' message
var message = $this.data("validation" + el + "Message");
- var hasOverrideMessage = (message !== undefined);
+ var hasOverrideMessage = message !== undefined;
var foundValidator = false;
- message =
- (
- message ?
- message :
- "'" + el + "' validation failed <!-- Add attribute 'data-validation-" + el.toLowerCase() + "-message' to input to change this message -->"
- );
+ message = message
+ ? message
+ : "'" +
+ el +
+ "' validation failed <!-- Add attribute 'data-validation-" +
+ el.toLowerCase() +
+ "-message' to input to change this message -->";
$.each(
settings.validatorTypes,
- function(validatorType, validatorTemplate) {
+ function (validatorType, validatorTemplate) {
if (validators[validatorType] === undefined) {
validators[validatorType] = [];
}
- if (!foundValidator && $this.data("validation" + el + formatValidatorName(validatorTemplate.name)) !== undefined) {
+ if (
+ !foundValidator &&
+ $this.data(
+ "validation" +
+ el +
+ formatValidatorName(validatorTemplate.name)
+ ) !== undefined
+ ) {
validators[validatorType].push(
$.extend(
- true, {
+ true,
+ {
name: formatValidatorName(validatorTemplate.name),
- message: message
+ message: message,
},
validatorTemplate.init($this, el)
)
);
foundValidator = true;
}
}
);
- if (!foundValidator && settings.builtInValidators[el.toLowerCase()]) {
-
- var validator = $.extend(true, {}, settings.builtInValidators[el.toLowerCase()]);
+ if (
+ !foundValidator &&
+ settings.builtInValidators[el.toLowerCase()]
+ ) {
+ var validator = $.extend(
+ true,
+ {},
+ settings.builtInValidators[el.toLowerCase()]
+ );
if (hasOverrideMessage) {
validator.message = message;
}
var validatorType = validator.type.toLowerCase();
if (validatorType === "shortcut") {
foundValidator = true;
} else {
$.each(
settings.validatorTypes,
- function(validatorTemplateType, validatorTemplate) {
+ function (validatorTemplateType, validatorTemplate) {
if (validators[validatorTemplateType] === undefined) {
validators[validatorTemplateType] = [];
}
- if (!foundValidator && validatorType === validatorTemplateType.toLowerCase()) {
- $this.data("validation" + el + formatValidatorName(validatorTemplate.name), validator[validatorTemplate.name.toLowerCase()]);
+ if (
+ !foundValidator &&
+ validatorType === validatorTemplateType.toLowerCase()
+ ) {
+ $this.data(
+ "validation" +
+ el +
+ formatValidatorName(validatorTemplate.name),
+ validator[validatorTemplate.name.toLowerCase()]
+ );
validators[validatorType].push(
- $.extend(
- validator,
- validatorTemplate.init($this, el)
- )
+ $.extend(validator, validatorTemplate.init($this, el))
);
foundValidator = true;
}
}
);
@@ -356,136 +441,155 @@
// STORE FALLBACK VALUES
// =============================================================
$helpBlock.data(
"original-contents",
- (
- $helpBlock.data("original-contents") ?
- $helpBlock.data("original-contents") :
- $helpBlock.html()
- )
+ $helpBlock.data("original-contents")
+ ? $helpBlock.data("original-contents")
+ : $helpBlock.html()
);
$helpBlock.data(
"original-role",
- (
- $helpBlock.data("original-role") ?
- $helpBlock.data("original-role") :
- $helpBlock.attr("role")
- )
+ $helpBlock.data("original-role")
+ ? $helpBlock.data("original-role")
+ : $helpBlock.attr("role")
);
$controlGroup.data(
"original-classes",
- (
- $controlGroup.data("original-clases") ?
- $controlGroup.data("original-classes") :
- $controlGroup.attr("class")
- )
+ $controlGroup.data("original-clases")
+ ? $controlGroup.data("original-classes")
+ : $controlGroup.attr("class")
);
$this.data(
"original-aria-invalid",
- (
- $this.data("original-aria-invalid") ?
- $this.data("original-aria-invalid") :
- $this.attr("aria-invalid")
- )
+ $this.data("original-aria-invalid")
+ ? $this.data("original-aria-invalid")
+ : $this.attr("aria-invalid")
);
// =============================================================
// VALIDATION
// =============================================================
- $this.bind(
- "validation.validation",
- function(event, params) {
+ $this.bind("validation.validation", function (event, params) {
+ var value = getValue($this);
- var value = getValue($this);
+ // Get a list of the errors to apply
+ var errorsFound = [];
- // Get a list of the errors to apply
- var errorsFound = [];
+ $.each(validators, function (validatorType, validatorTypeArray) {
+ if (
+ value ||
+ value.length ||
+ (params && params.includeEmpty) ||
+ (!!settings.validatorTypes[validatorType].blockSubmit &&
+ params &&
+ !!params.submitting)
+ ) {
+ $.each(validatorTypeArray, function (i, validator) {
+ if (
+ settings.validatorTypes[validatorType].validate(
+ $this,
+ value,
+ validator
+ )
+ ) {
+ errorsFound.push(validator.message);
+ }
+ });
+ }
+ });
- $.each(validators, function(validatorType, validatorTypeArray) {
- if (value || value.length || (params && params.includeEmpty) || (!!settings.validatorTypes[validatorType].blockSubmit && params && !!params.submitting)) {
- $.each(validatorTypeArray, function(i, validator) {
- if (settings.validatorTypes[validatorType].validate($this, value, validator)) {
- errorsFound.push(validator.message);
- }
- });
- }
- });
+ return errorsFound;
+ });
- return errorsFound;
- }
- );
+ $this.bind("getValidators.validation", function () {
+ return validators;
+ });
- $this.bind(
- "getValidators.validation",
- function() {
- return validators;
- }
- );
-
// =============================================================
// WATCH FOR CHANGES
// =============================================================
+ $this.bind("submit.validation", function () {
+ return $this.triggerHandler("change.validation", {
+ submitting: true,
+ });
+ });
$this.bind(
- "submit.validation",
- function() {
- return $this.triggerHandler("change.validation", {
- submitting: true
- });
- }
- );
- $this.bind(
[
"keyup",
"focus",
"blur",
"click",
"keydown",
"keypress",
- "change"
+ "change",
].join(".validation ") + ".validation",
- function(e, params) {
-
+ function (e, params) {
var value = getValue($this);
var errorsFound = [];
- $controlGroup.find("input,textarea,select").each(function(i, el) {
- var oldCount = errorsFound.length;
- $.each($(el).triggerHandler("validation.validation", params), function(j, message) {
- errorsFound.push(message);
+ $controlGroup
+ .find("input,textarea,select")
+ .each(function (i, el) {
+ var oldCount = errorsFound.length;
+ $.each(
+ $(el).triggerHandler("validation.validation", params),
+ function (j, message) {
+ errorsFound.push(message);
+ }
+ );
+ if (errorsFound.length > oldCount) {
+ $(el).attr("aria-invalid", "true");
+ } else {
+ var original = $this.data("original-aria-invalid");
+ $(el).attr(
+ "aria-invalid",
+ original !== undefined ? original : false
+ );
+ }
});
- if (errorsFound.length > oldCount) {
- $(el).attr("aria-invalid", "true");
- } else {
- var original = $this.data("original-aria-invalid");
- $(el).attr("aria-invalid", (original !== undefined ? original : false));
- }
- });
- $form.find("input,select,textarea").not($this).not("[name=\"" + $this.attr("name") + "\"]").trigger("validationLostFocus.validation");
+ $form
+ .find("input,select,textarea")
+ .not($this)
+ .not('[name="' + $this.attr("name") + '"]')
+ .trigger("validationLostFocus.validation");
errorsFound = $.unique(errorsFound.sort());
// Were there any errors?
if (errorsFound.length) {
// Better flag it up as a warning.
$controlGroup.removeClass("success error").addClass("warning");
// How many errors did we find?
- if (settings.options.semanticallyStrict && errorsFound.length === 1) {
+ if (
+ settings.options.semanticallyStrict &&
+ errorsFound.length === 1
+ ) {
// Only one? Being strict? Just output it.
- $helpBlock.html(errorsFound[0] +
- (settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : ""));
+ $helpBlock.html(
+ errorsFound[0] +
+ (settings.options.prependExistingHelpBlock
+ ? $helpBlock.data("original-contents")
+ : "")
+ );
} else {
// Multiple? Being sloppy? Glue them together into an UL.
- $helpBlock.html("<ul role=\"alert\"><li>" + errorsFound.join("</li><li>") + "</li></ul>" +
- (settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : ""));
+ $helpBlock.html(
+ '<ul role="alert"><li>' +
+ errorsFound.join("</li><li>") +
+ "</li></ul>" +
+ (settings.options.prependExistingHelpBlock
+ ? $helpBlock.data("original-contents")
+ : "")
+ );
}
} else {
$controlGroup.removeClass("warning error success");
if (value.length > 0) {
$controlGroup.addClass("success");
@@ -496,96 +600,88 @@
if (e.type === "blur") {
$controlGroup.removeClass("success");
}
}
);
- $this.bind("validationLostFocus.validation", function() {
+ $this.bind("validationLostFocus.validation", function () {
$controlGroup.removeClass("success");
});
});
},
- destroy: function() {
+ destroy: function () {
+ return this.each(function () {
+ var $this = $(this),
+ $controlGroup = $this.parents(".form-group").first(),
+ $helpBlock = $controlGroup.find(".help-block").first();
- return this.each(
- function() {
-
- var
- $this = $(this),
- $controlGroup = $this.parents(".form-group").first(),
- $helpBlock = $controlGroup.find(".help-block").first();
-
- // remove our events
- $this.unbind('.validation'); // events are namespaced.
- // reset help text
- $helpBlock.html($helpBlock.data("original-contents"));
- // reset classes
- $controlGroup.attr("class", $controlGroup.data("original-classes"));
- // reset aria
- $this.attr("aria-invalid", $this.data("original-aria-invalid"));
- // reset role
- $helpBlock.attr("role", $this.data("original-role"));
- // remove all elements we created
- if (createdElements.indexOf($helpBlock[0]) > -1) {
- $helpBlock.remove();
- }
-
+ // remove our events
+ $this.unbind(".validation"); // events are namespaced.
+ // reset help text
+ $helpBlock.html($helpBlock.data("original-contents"));
+ // reset classes
+ $controlGroup.attr("class", $controlGroup.data("original-classes"));
+ // reset aria
+ $this.attr("aria-invalid", $this.data("original-aria-invalid"));
+ // reset role
+ $helpBlock.attr("role", $this.data("original-role"));
+ // remove all elements we created
+ if (createdElements.indexOf($helpBlock[0]) > -1) {
+ $helpBlock.remove();
}
- );
-
+ });
},
- collectErrors: function(includeEmpty) {
-
+ collectErrors: function (includeEmpty) {
var errorMessages = {};
- this.each(function(i, el) {
+ this.each(function (i, el) {
var $el = $(el);
var name = $el.attr("name");
var errors = $el.triggerHandler("validation.validation", {
- includeEmpty: true
+ includeEmpty: true,
});
errorMessages[name] = $.extend(true, errors, errorMessages[name]);
});
- $.each(errorMessages, function(i, el) {
+ $.each(errorMessages, function (i, el) {
if (el.length === 0) {
delete errorMessages[i];
}
});
return errorMessages;
-
},
- hasErrors: function() {
-
+ hasErrors: function () {
var errorMessages = [];
- this.each(function(i, el) {
+ this.each(function (i, el) {
errorMessages = errorMessages.concat(
- $(el).triggerHandler("getValidators.validation") ? $(el).triggerHandler("validation.validation", {
- submitting: true
- }) : []
+ $(el).triggerHandler("getValidators.validation")
+ ? $(el).triggerHandler("validation.validation", {
+ submitting: true,
+ })
+ : []
);
});
- return (errorMessages.length > 0);
+ return errorMessages.length > 0;
},
- override: function(newDefaults) {
+ override: function (newDefaults) {
defaults = $.extend(true, defaults, newDefaults);
- }
+ },
},
validatorTypes: {
callback: {
name: "callback",
- init: function($this, name) {
+ init: function ($this, name) {
return {
validatorName: name,
callback: $this.data("validation" + name + "Callback"),
lastValue: $this.val(),
lastValid: true,
- lastFinished: true
+ lastFinished: true,
};
},
- validate: function($this, value, validator) {
+ validate: function ($this, value, validator) {
if (validator.lastValue === value && validator.lastFinished) {
return !validator.lastValid;
}
if (validator.lastFinished === true) {
@@ -598,44 +694,49 @@
executeFunctionByName(
validator.callback,
window,
$this,
value,
- function(data) {
+ function (data) {
if (rrjqbvValidator.lastValue === data.value) {
rrjqbvValidator.lastValid = data.valid;
if (data.message) {
rrjqbvValidator.message = data.message;
}
rrjqbvValidator.lastFinished = true;
- rrjqbvThis.data("validation" + rrjqbvValidator.validatorName + "Message", rrjqbvValidator.message);
+ rrjqbvThis.data(
+ "validation" + rrjqbvValidator.validatorName + "Message",
+ rrjqbvValidator.message
+ );
// Timeout is set to avoid problems with the events being considered 'already fired'
- setTimeout(function() {
+ setTimeout(function () {
rrjqbvThis.trigger("change.validation");
}, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
}
}
);
}
return false;
-
- }
+ },
},
ajax: {
name: "ajax",
- init: function($this, name) {
+ init: function ($this, name) {
return {
validatorName: name,
url: $this.data("validation" + name + "Ajax"),
lastValue: $this.val(),
lastValid: true,
- lastFinished: true
+ lastFinished: true,
};
},
- validate: function($this, value, validator) {
- if ("" + validator.lastValue === "" + value && validator.lastFinished === true) {
+ validate: function ($this, value, validator) {
+ if (
+ "" + validator.lastValue === "" + value &&
+ validator.lastFinished === true
+ ) {
return validator.lastValid === false;
}
if (validator.lastFinished === true) {
validator.lastValue = value;
@@ -643,258 +744,309 @@
validator.lastFinished = false;
$.ajax({
url: validator.url,
data: "value=" + value + "&field=" + $this.attr("name"),
dataType: "json",
- success: function(data) {
+ success: function (data) {
if ("" + validator.lastValue === "" + data.value) {
- validator.lastValid = !!(data.valid);
+ validator.lastValid = !!data.valid;
if (data.message) {
validator.message = data.message;
}
validator.lastFinished = true;
- $this.data("validation" + validator.validatorName + "Message", validator.message);
+ $this.data(
+ "validation" + validator.validatorName + "Message",
+ validator.message
+ );
// Timeout is set to avoid problems with the events being considered 'already fired'
- setTimeout(function() {
+ setTimeout(function () {
$this.trigger("change.validation");
}, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
}
},
- failure: function() {
+ failure: function () {
validator.lastValid = true;
validator.message = "ajax call failed";
validator.lastFinished = true;
- $this.data("validation" + validator.validatorName + "Message", validator.message);
+ $this.data(
+ "validation" + validator.validatorName + "Message",
+ validator.message
+ );
// Timeout is set to avoid problems with the events being considered 'already fired'
- setTimeout(function() {
+ setTimeout(function () {
$this.trigger("change.validation");
}, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
- }
+ },
});
}
return false;
-
- }
+ },
},
regex: {
name: "regex",
- init: function($this, name) {
+ init: function ($this, name) {
return {
- regex: regexFromString($this.data("validation" + name + "Regex"))
+ regex: regexFromString($this.data("validation" + name + "Regex")),
};
},
- validate: function($this, value, validator) {
- return (!validator.regex.test(value) && !validator.negative) ||
- (validator.regex.test(value) && validator.negative);
- }
+ validate: function ($this, value, validator) {
+ return (
+ (!validator.regex.test(value) && !validator.negative) ||
+ (validator.regex.test(value) && validator.negative)
+ );
+ },
},
required: {
name: "required",
- init: function($this, name) {
+ init: function ($this, name) {
return {};
},
- validate: function($this, value, validator) {
- return !!(value.length === 0 && !validator.negative) ||
- !!(value.length > 0 && validator.negative);
+ validate: function ($this, value, validator) {
+ return (
+ !!(value.length === 0 && !validator.negative) ||
+ !!(value.length > 0 && validator.negative)
+ );
},
- blockSubmit: true
+ blockSubmit: true,
},
match: {
name: "match",
- init: function($this, name) {
- var element = $this.parents("form").first().find("[name=\"" + $this.data("validation" + name + "Match") + "\"]").first();
- element.bind("validation.validation", function() {
+ init: function ($this, name) {
+ var element = $this
+ .parents("form")
+ .first()
+ .find('[name="' + $this.data("validation" + name + "Match") + '"]')
+ .first();
+ element.bind("validation.validation", function () {
$this.trigger("change.validation", {
- submitting: true
+ submitting: true,
});
});
return {
- "element": element
+ element: element,
};
},
- validate: function($this, value, validator) {
- return (value !== validator.element.val() && !validator.negative) ||
- (value === validator.element.val() && validator.negative);
+ validate: function ($this, value, validator) {
+ return (
+ (value !== validator.element.val() && !validator.negative) ||
+ (value === validator.element.val() && validator.negative)
+ );
},
- blockSubmit: true
+ blockSubmit: true,
},
max: {
name: "max",
- init: function($this, name) {
+ init: function ($this, name) {
return {
- max: $this.data("validation" + name + "Max")
+ max: $this.data("validation" + name + "Max"),
};
},
- validate: function($this, value, validator) {
- return (parseFloat(value, 10) > parseFloat(validator.max, 10) && !validator.negative) ||
- (parseFloat(value, 10) <= parseFloat(validator.max, 10) && validator.negative);
- }
+ validate: function ($this, value, validator) {
+ return (
+ (parseFloat(value, 10) > parseFloat(validator.max, 10) &&
+ !validator.negative) ||
+ (parseFloat(value, 10) <= parseFloat(validator.max, 10) &&
+ validator.negative)
+ );
+ },
},
min: {
name: "min",
- init: function($this, name) {
+ init: function ($this, name) {
return {
- min: $this.data("validation" + name + "Min")
+ min: $this.data("validation" + name + "Min"),
};
},
- validate: function($this, value, validator) {
- return (parseFloat(value) < parseFloat(validator.min) && !validator.negative) ||
- (parseFloat(value) >= parseFloat(validator.min) && validator.negative);
- }
+ validate: function ($this, value, validator) {
+ return (
+ (parseFloat(value) < parseFloat(validator.min) &&
+ !validator.negative) ||
+ (parseFloat(value) >= parseFloat(validator.min) &&
+ validator.negative)
+ );
+ },
},
maxlength: {
name: "maxlength",
- init: function($this, name) {
+ init: function ($this, name) {
return {
- maxlength: $this.data("validation" + name + "Maxlength")
+ maxlength: $this.data("validation" + name + "Maxlength"),
};
},
- validate: function($this, value, validator) {
- return ((value.length > validator.maxlength) && !validator.negative) ||
- ((value.length <= validator.maxlength) && validator.negative);
- }
+ validate: function ($this, value, validator) {
+ return (
+ (value.length > validator.maxlength && !validator.negative) ||
+ (value.length <= validator.maxlength && validator.negative)
+ );
+ },
},
minlength: {
name: "minlength",
- init: function($this, name) {
+ init: function ($this, name) {
return {
- minlength: $this.data("validation" + name + "Minlength")
+ minlength: $this.data("validation" + name + "Minlength"),
};
},
- validate: function($this, value, validator) {
- return ((value.length < validator.minlength) && !validator.negative) ||
- ((value.length >= validator.minlength) && validator.negative);
- }
+ validate: function ($this, value, validator) {
+ return (
+ (value.length < validator.minlength && !validator.negative) ||
+ (value.length >= validator.minlength && validator.negative)
+ );
+ },
},
maxchecked: {
name: "maxchecked",
- init: function($this, name) {
- var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]");
- elements.bind("click.validation", function() {
+ init: function ($this, name) {
+ var elements = $this
+ .parents("form")
+ .first()
+ .find('[name="' + $this.attr("name") + '"]');
+ elements.bind("click.validation", function () {
$this.trigger("change.validation", {
- includeEmpty: true
+ includeEmpty: true,
});
});
return {
maxchecked: $this.data("validation" + name + "Maxchecked"),
- elements: elements
+ elements: elements,
};
},
- validate: function($this, value, validator) {
- return (validator.elements.filter(":checked").length > validator.maxchecked && !validator.negative) ||
- (validator.elements.filter(":checked").length <= validator.maxchecked && validator.negative);
+ validate: function ($this, value, validator) {
+ return (
+ (validator.elements.filter(":checked").length >
+ validator.maxchecked &&
+ !validator.negative) ||
+ (validator.elements.filter(":checked").length <=
+ validator.maxchecked &&
+ validator.negative)
+ );
},
- blockSubmit: true
+ blockSubmit: true,
},
minchecked: {
name: "minchecked",
- init: function($this, name) {
- var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]");
- elements.bind("click.validation", function() {
+ init: function ($this, name) {
+ var elements = $this
+ .parents("form")
+ .first()
+ .find('[name="' + $this.attr("name") + '"]');
+ elements.bind("click.validation", function () {
$this.trigger("change.validation", {
- includeEmpty: true
+ includeEmpty: true,
});
});
return {
minchecked: $this.data("validation" + name + "Minchecked"),
- elements: elements
+ elements: elements,
};
},
- validate: function($this, value, validator) {
- return (validator.elements.filter(":checked").length < validator.minchecked && !validator.negative) ||
- (validator.elements.filter(":checked").length >= validator.minchecked && validator.negative);
+ validate: function ($this, value, validator) {
+ return (
+ (validator.elements.filter(":checked").length <
+ validator.minchecked &&
+ !validator.negative) ||
+ (validator.elements.filter(":checked").length >=
+ validator.minchecked &&
+ validator.negative)
+ );
},
- blockSubmit: true
- }
+ blockSubmit: true,
+ },
},
builtInValidators: {
email: {
name: "Email",
type: "shortcut",
- shortcut: "validemail"
+ shortcut: "validemail",
},
validemail: {
name: "Validemail",
type: "regex",
- regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\.[A-Za-z]{2,4}",
- message: "Not a valid email address<!-- data-validator-validemail-message to override -->"
+ regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}",
+ message:
+ "Not a valid email address<!-- data-validator-validemail-message to override -->",
},
passwordagain: {
name: "Passwordagain",
type: "match",
match: "password",
- message: "Does not match the given password<!-- data-validator-paswordagain-message to override -->"
+ message:
+ "Does not match the given password<!-- data-validator-paswordagain-message to override -->",
},
positive: {
name: "Positive",
type: "shortcut",
- shortcut: "number,positivenumber"
+ shortcut: "number,positivenumber",
},
negative: {
name: "Negative",
type: "shortcut",
- shortcut: "number,negativenumber"
+ shortcut: "number,negativenumber",
},
number: {
name: "Number",
type: "regex",
- regex: "([+-]?\\\d+(\\\.\\\d*)?([eE][+-]?[0-9]+)?)?",
- message: "Must be a number<!-- data-validator-number-message to override -->"
+ regex: "([+-]?\\d+(\\.\\d*)?([eE][+-]?[0-9]+)?)?",
+ message:
+ "Must be a number<!-- data-validator-number-message to override -->",
},
integer: {
name: "Integer",
type: "regex",
- regex: "[+-]?\\\d+",
- message: "No decimal places allowed<!-- data-validator-integer-message to override -->"
+ regex: "[+-]?\\d+",
+ message:
+ "No decimal places allowed<!-- data-validator-integer-message to override -->",
},
positivenumber: {
name: "Positivenumber",
type: "min",
min: 0,
- message: "Must be a positive number<!-- data-validator-positivenumber-message to override -->"
+ message:
+ "Must be a positive number<!-- data-validator-positivenumber-message to override -->",
},
negativenumber: {
name: "Negativenumber",
type: "max",
max: 0,
- message: "Must be a negative number<!-- data-validator-negativenumber-message to override -->"
+ message:
+ "Must be a negative number<!-- data-validator-negativenumber-message to override -->",
},
required: {
name: "Required",
type: "required",
- message: "This is required<!-- data-validator-required-message to override -->"
+ message:
+ "This is required<!-- data-validator-required-message to override -->",
},
checkone: {
name: "Checkone",
type: "minchecked",
minchecked: 1,
- message: "Check at least one option<!-- data-validation-checkone-message to override -->"
- }
- }
+ message:
+ "Check at least one option<!-- data-validation-checkone-message to override -->",
+ },
+ },
};
- var formatValidatorName = function(name) {
- return name
- .toLowerCase()
- .replace(
- /(^|\s)([a-z])/g,
- function(m, p1, p2) {
- return p1 + p2.toUpperCase();
- }
- );
+ var formatValidatorName = function (name) {
+ return name.toLowerCase().replace(/(^|\s)([a-z])/g, function (m, p1, p2) {
+ return p1 + p2.toUpperCase();
+ });
};
- var getValue = function($this) {
+ var getValue = function ($this) {
// Extract the value we're talking about
var value = $this.val();
var type = $this.attr("type");
if (type === "checkbox") {
- value = ($this.is(":checked") ? value : "");
+ value = $this.is(":checked") ? value : "";
}
if (type === "radio") {
- value = ($('input[name="' + $this.attr("name") + '"]:checked').length > 0 ? value : "");
+ value =
+ $('input[name="' + $this.attr("name") + '"]:checked').length > 0
+ ? value
+ : "";
}
return value;
};
function regexFromString(inputstring) {
@@ -905,33 +1057,37 @@
* Thanks to Jason Bunting via StackOverflow.com
*
* http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string#answer-359910
* Short link: http://tinyurl.com/executeFunctionByName
**/
- function executeFunctionByName(functionName, context /*, args*/ ) {
+ function executeFunctionByName(functionName, context /*, args*/) {
var args = Array.prototype.slice.call(arguments).splice(2);
var namespaces = functionName.split(".");
var func = namespaces.pop();
for (var i = 0; i < namespaces.length; i++) {
context = context[namespaces[i]];
}
return context[func].apply(this, args);
}
- $.fn.jqBootstrapValidation = function(method) {
-
+ $.fn.jqBootstrapValidation = function (method) {
if (defaults.methods[method]) {
- return defaults.methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
- } else if (typeof method === 'object' || !method) {
+ return defaults.methods[method].apply(
+ this,
+ Array.prototype.slice.call(arguments, 1)
+ );
+ } else if (typeof method === "object" || !method) {
return defaults.methods.init.apply(this, arguments);
} else {
- $.error('Method ' + method + ' does not exist on jQuery.jqBootstrapValidation');
+ $.error(
+ "Method " + method + " does not exist on jQuery.jqBootstrapValidation"
+ );
return null;
}
-
};
- $.jqBootstrapValidation = function(options) {
- $(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this, arguments);
+ $.jqBootstrapValidation = function (options) {
+ $(":input")
+ .not("[type=image],[type=submit]")
+ .jqBootstrapValidation.apply(this, arguments);
};
-
})(jQuery);