jekyll-agency 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,8 +8,7 @@
8
8
  * http://ReactiveRaven.github.com/jqBootstrapValidation/
9
9
  */
10
10
 
11
- (function($) {
12
-
11
+ (function ($) {
13
12
  var createdElements = [];
14
13
 
15
14
  var defaults = {
@@ -21,16 +20,15 @@
21
20
  submitSuccess: false, // function called just before a successful submit event is sent to the server
22
21
  semanticallyStrict: false, // set to true to tidy up generated HTML output
23
22
  autoAdd: {
24
- helpBlocks: true
23
+ helpBlocks: true,
25
24
  },
26
- filter: function() {
25
+ filter: function () {
27
26
  // return $(this).is(":visible"); // only validate elements you can see
28
27
  return true; // validate everything
29
- }
28
+ },
30
29
  },
31
30
  methods: {
32
- init: function(options) {
33
-
31
+ init: function (options) {
34
32
  var settings = $.extend(true, {}, defaults);
35
33
 
36
34
  settings.options = $.extend(true, settings.options, options);
@@ -38,23 +36,28 @@
38
36
  var $siblingElements = this;
39
37
 
40
38
  var uniqueForms = $.unique(
41
- $siblingElements.map(function() {
42
- return $(this).parents("form")[0];
43
- }).toArray()
39
+ $siblingElements
40
+ .map(function () {
41
+ return $(this).parents("form")[0];
42
+ })
43
+ .toArray()
44
44
  );
45
45
 
46
- $(uniqueForms).bind("submit", function(e) {
46
+ $(uniqueForms).bind("submit", function (e) {
47
47
  var $form = $(this);
48
48
  var warningsFound = 0;
49
- var $inputs = $form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter);
50
- $inputs.trigger("submit.validation").trigger("validationLostFocus.validation");
51
-
52
- $inputs.each(function(i, el) {
49
+ var $inputs = $form
50
+ .find("input,textarea,select")
51
+ .not("[type=submit],[type=image]")
52
+ .filter(settings.options.filter);
53
+ $inputs
54
+ .trigger("submit.validation")
55
+ .trigger("validationLostFocus.validation");
56
+
57
+ $inputs.each(function (i, el) {
53
58
  var $this = $(el),
54
59
  $controlGroup = $this.parents(".form-group").first();
55
- if (
56
- $controlGroup.hasClass("warning")
57
- ) {
60
+ if ($controlGroup.hasClass("warning")) {
58
61
  $controlGroup.removeClass("warning").addClass("error");
59
62
  warningsFound++;
60
63
  }
@@ -68,7 +71,11 @@
68
71
  }
69
72
  $form.addClass("error");
70
73
  if ($.isFunction(settings.options.submitError)) {
71
- settings.options.submitError($form, e, $inputs.jqBootstrapValidation("collectErrors", true));
74
+ settings.options.submitError(
75
+ $form,
76
+ e,
77
+ $inputs.jqBootstrapValidation("collectErrors", true)
78
+ );
72
79
  }
73
80
  } else {
74
81
  $form.removeClass("error");
@@ -78,8 +85,7 @@
78
85
  }
79
86
  });
80
87
 
81
- return this.each(function() {
82
-
88
+ return this.each(function () {
83
89
  // Get references to everything we're interested in
84
90
  var $this = $(this),
85
91
  $controlGroup = $this.parents(".form-group").first(),
@@ -88,9 +94,13 @@
88
94
  validatorNames = [];
89
95
 
90
96
  // create message container if not exists
91
- if (!$helpBlock.length && settings.options.autoAdd && settings.options.autoAdd.helpBlocks) {
97
+ if (
98
+ !$helpBlock.length &&
99
+ settings.options.autoAdd &&
100
+ settings.options.autoAdd.helpBlocks
101
+ ) {
92
102
  $helpBlock = $('<div class="help-block" />');
93
- $controlGroup.find('.controls').append($helpBlock);
103
+ $controlGroup.find(".controls").append($helpBlock);
94
104
  createdElements.push($helpBlock[0]);
95
105
  }
96
106
 
@@ -106,7 +116,8 @@
106
116
  // PATTERN
107
117
  // ---------------------------------------------------------
108
118
  if ($this.attr("pattern") !== undefined) {
109
- message = "Not in the expected format<!-- data-validation-pattern-message to override -->";
119
+ message =
120
+ "Not in the expected format<!-- data-validation-pattern-message to override -->";
110
121
  if ($this.data("validationPatternMessage")) {
111
122
  message = $this.data("validationPatternMessage");
112
123
  }
@@ -116,9 +127,18 @@
116
127
  // ---------------------------------------------------------
117
128
  // MAX
118
129
  // ---------------------------------------------------------
119
- if ($this.attr("max") !== undefined || $this.attr("aria-valuemax") !== undefined) {
120
- var max = ($this.attr("max") !== undefined ? $this.attr("max") : $this.attr("aria-valuemax"));
121
- message = "Too high: Maximum of '" + max + "'<!-- data-validation-max-message to override -->";
130
+ if (
131
+ $this.attr("max") !== undefined ||
132
+ $this.attr("aria-valuemax") !== undefined
133
+ ) {
134
+ var max =
135
+ $this.attr("max") !== undefined
136
+ ? $this.attr("max")
137
+ : $this.attr("aria-valuemax");
138
+ message =
139
+ "Too high: Maximum of '" +
140
+ max +
141
+ "'<!-- data-validation-max-message to override -->";
122
142
  if ($this.data("validationMaxMessage")) {
123
143
  message = $this.data("validationMaxMessage");
124
144
  }
@@ -128,9 +148,18 @@
128
148
  // ---------------------------------------------------------
129
149
  // MIN
130
150
  // ---------------------------------------------------------
131
- if ($this.attr("min") !== undefined || $this.attr("aria-valuemin") !== undefined) {
132
- var min = ($this.attr("min") !== undefined ? $this.attr("min") : $this.attr("aria-valuemin"));
133
- message = "Too low: Minimum of '" + min + "'<!-- data-validation-min-message to override -->";
151
+ if (
152
+ $this.attr("min") !== undefined ||
153
+ $this.attr("aria-valuemin") !== undefined
154
+ ) {
155
+ var min =
156
+ $this.attr("min") !== undefined
157
+ ? $this.attr("min")
158
+ : $this.attr("aria-valuemin");
159
+ message =
160
+ "Too low: Minimum of '" +
161
+ min +
162
+ "'<!-- data-validation-min-message to override -->";
134
163
  if ($this.data("validationMinMessage")) {
135
164
  message = $this.data("validationMinMessage");
136
165
  }
@@ -141,28 +170,43 @@
141
170
  // MAXLENGTH
142
171
  // ---------------------------------------------------------
143
172
  if ($this.attr("maxlength") !== undefined) {
144
- message = "Too long: Maximum of '" + $this.attr("maxlength") + "' characters<!-- data-validation-maxlength-message to override -->";
173
+ message =
174
+ "Too long: Maximum of '" +
175
+ $this.attr("maxlength") +
176
+ "' characters<!-- data-validation-maxlength-message to override -->";
145
177
  if ($this.data("validationMaxlengthMessage")) {
146
178
  message = $this.data("validationMaxlengthMessage");
147
179
  }
148
180
  $this.data("validationMaxlengthMessage", message);
149
- $this.data("validationMaxlengthMaxlength", $this.attr("maxlength"));
181
+ $this.data(
182
+ "validationMaxlengthMaxlength",
183
+ $this.attr("maxlength")
184
+ );
150
185
  }
151
186
  // ---------------------------------------------------------
152
187
  // MINLENGTH
153
188
  // ---------------------------------------------------------
154
189
  if ($this.attr("minlength") !== undefined) {
155
- message = "Too short: Minimum of '" + $this.attr("minlength") + "' characters<!-- data-validation-minlength-message to override -->";
190
+ message =
191
+ "Too short: Minimum of '" +
192
+ $this.attr("minlength") +
193
+ "' characters<!-- data-validation-minlength-message to override -->";
156
194
  if ($this.data("validationMinlengthMessage")) {
157
195
  message = $this.data("validationMinlengthMessage");
158
196
  }
159
197
  $this.data("validationMinlengthMessage", message);
160
- $this.data("validationMinlengthMinlength", $this.attr("minlength"));
198
+ $this.data(
199
+ "validationMinlengthMinlength",
200
+ $this.attr("minlength")
201
+ );
161
202
  }
162
203
  // ---------------------------------------------------------
163
204
  // REQUIRED
164
205
  // ---------------------------------------------------------
165
- if ($this.attr("required") !== undefined || $this.attr("aria-required") !== undefined) {
206
+ if (
207
+ $this.attr("required") !== undefined ||
208
+ $this.attr("aria-required") !== undefined
209
+ ) {
166
210
  message = settings.builtInValidators.required.message;
167
211
  if ($this.data("validationRequiredMessage")) {
168
212
  message = $this.data("validationRequiredMessage");
@@ -172,7 +216,10 @@
172
216
  // ---------------------------------------------------------
173
217
  // NUMBER
174
218
  // ---------------------------------------------------------
175
- if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "number") {
219
+ if (
220
+ $this.attr("type") !== undefined &&
221
+ $this.attr("type").toLowerCase() === "number"
222
+ ) {
176
223
  message = settings.builtInValidators.number.message;
177
224
  if ($this.data("validationNumberMessage")) {
178
225
  message = $this.data("validationNumberMessage");
@@ -182,8 +229,12 @@
182
229
  // ---------------------------------------------------------
183
230
  // EMAIL
184
231
  // ---------------------------------------------------------
185
- if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "email") {
186
- message = "Not a valid email address<!-- data-validator-validemail-message to override -->";
232
+ if (
233
+ $this.attr("type") !== undefined &&
234
+ $this.attr("type").toLowerCase() === "email"
235
+ ) {
236
+ message =
237
+ "Not a valid email address<!-- data-validator-validemail-message to override -->";
187
238
  if ($this.data("validationValidemailMessage")) {
188
239
  message = $this.data("validationValidemailMessage");
189
240
  } else if ($this.data("validationEmailMessage")) {
@@ -195,23 +246,35 @@
195
246
  // MINCHECKED
196
247
  // ---------------------------------------------------------
197
248
  if ($this.attr("minchecked") !== undefined) {
198
- message = "Not enough options checked; Minimum of '" + $this.attr("minchecked") + "' required<!-- data-validation-minchecked-message to override -->";
249
+ message =
250
+ "Not enough options checked; Minimum of '" +
251
+ $this.attr("minchecked") +
252
+ "' required<!-- data-validation-minchecked-message to override -->";
199
253
  if ($this.data("validationMincheckedMessage")) {
200
254
  message = $this.data("validationMincheckedMessage");
201
255
  }
202
256
  $this.data("validationMincheckedMessage", message);
203
- $this.data("validationMincheckedMinchecked", $this.attr("minchecked"));
257
+ $this.data(
258
+ "validationMincheckedMinchecked",
259
+ $this.attr("minchecked")
260
+ );
204
261
  }
205
262
  // ---------------------------------------------------------
206
263
  // MAXCHECKED
207
264
  // ---------------------------------------------------------
208
265
  if ($this.attr("maxchecked") !== undefined) {
209
- message = "Too many options checked; Maximum of '" + $this.attr("maxchecked") + "' required<!-- data-validation-maxchecked-message to override -->";
266
+ message =
267
+ "Too many options checked; Maximum of '" +
268
+ $this.attr("maxchecked") +
269
+ "' required<!-- data-validation-maxchecked-message to override -->";
210
270
  if ($this.data("validationMaxcheckedMessage")) {
211
271
  message = $this.data("validationMaxcheckedMessage");
212
272
  }
213
273
  $this.data("validationMaxcheckedMessage", message);
214
- $this.data("validationMaxcheckedMaxchecked", $this.attr("maxchecked"));
274
+ $this.data(
275
+ "validationMaxcheckedMaxchecked",
276
+ $this.attr("maxchecked")
277
+ );
215
278
  }
216
279
  }
217
280
 
@@ -225,7 +288,7 @@
225
288
  }
226
289
 
227
290
  // Get extra ones defined on the element's data attributes
228
- $.each($this.data(), function(i, el) {
291
+ $.each($this.data(), function (i, el) {
229
292
  var parts = i.replace(/([A-Z])/g, ",$1").split(",");
230
293
  if (parts[0] === "validation" && parts[1]) {
231
294
  validatorNames.push(parts[1]);
@@ -242,7 +305,7 @@
242
305
  do // repeatedly expand 'shortcut' validators into their real validators
243
306
  {
244
307
  // Uppercase only the first letter of each name
245
- $.each(validatorNames, function(i, el) {
308
+ $.each(validatorNames, function (i, el) {
246
309
  validatorNames[i] = formatValidatorName(el);
247
310
  });
248
311
 
@@ -251,19 +314,22 @@
251
314
 
252
315
  // Pull out the new validator names from each shortcut
253
316
  newValidatorNamesToInspect = [];
254
- $.each(validatorNamesToInspect, function(i, el) {
317
+ $.each(validatorNamesToInspect, function (i, el) {
255
318
  if ($this.data("validation" + el + "Shortcut") !== undefined) {
256
319
  // Are these custom validators?
257
320
  // Pull them out!
258
- $.each($this.data("validation" + el + "Shortcut").split(","), function(i2, el2) {
259
- newValidatorNamesToInspect.push(el2);
260
- });
321
+ $.each(
322
+ $this.data("validation" + el + "Shortcut").split(","),
323
+ function (i2, el2) {
324
+ newValidatorNamesToInspect.push(el2);
325
+ }
326
+ );
261
327
  } else if (settings.builtInValidators[el.toLowerCase()]) {
262
328
  // Is this a recognised built-in?
263
329
  // Pull it out!
264
330
  var validator = settings.builtInValidators[el.toLowerCase()];
265
331
  if (validator.type.toLowerCase() === "shortcut") {
266
- $.each(validator.shortcut.split(","), function(i, el) {
332
+ $.each(validator.shortcut.split(","), function (i, el) {
267
333
  el = formatValidatorName(el);
268
334
  newValidatorNamesToInspect.push(el);
269
335
  validatorNames.push(el);
@@ -273,8 +339,7 @@
273
339
  });
274
340
 
275
341
  validatorNamesToInspect = newValidatorNamesToInspect;
276
-
277
- } while (validatorNamesToInspect.length > 0)
342
+ } while (validatorNamesToInspect.length > 0);
278
343
 
279
344
  // =============================================================
280
345
  // SET UP VALIDATOR ARRAYS
@@ -282,30 +347,39 @@
282
347
 
283
348
  var validators = {};
284
349
 
285
- $.each(validatorNames, function(i, el) {
350
+ $.each(validatorNames, function (i, el) {
286
351
  // Set up the 'override' message
287
352
  var message = $this.data("validation" + el + "Message");
288
- var hasOverrideMessage = (message !== undefined);
353
+ var hasOverrideMessage = message !== undefined;
289
354
  var foundValidator = false;
290
- message =
291
- (
292
- message ?
293
- message :
294
- "'" + el + "' validation failed <!-- Add attribute 'data-validation-" + el.toLowerCase() + "-message' to input to change this message -->"
295
- );
355
+ message = message
356
+ ? message
357
+ : "'" +
358
+ el +
359
+ "' validation failed <!-- Add attribute 'data-validation-" +
360
+ el.toLowerCase() +
361
+ "-message' to input to change this message -->";
296
362
 
297
363
  $.each(
298
364
  settings.validatorTypes,
299
- function(validatorType, validatorTemplate) {
365
+ function (validatorType, validatorTemplate) {
300
366
  if (validators[validatorType] === undefined) {
301
367
  validators[validatorType] = [];
302
368
  }
303
- if (!foundValidator && $this.data("validation" + el + formatValidatorName(validatorTemplate.name)) !== undefined) {
369
+ if (
370
+ !foundValidator &&
371
+ $this.data(
372
+ "validation" +
373
+ el +
374
+ formatValidatorName(validatorTemplate.name)
375
+ ) !== undefined
376
+ ) {
304
377
  validators[validatorType].push(
305
378
  $.extend(
306
- true, {
379
+ true,
380
+ {
307
381
  name: formatValidatorName(validatorTemplate.name),
308
- message: message
382
+ message: message,
309
383
  },
310
384
  validatorTemplate.init($this, el)
311
385
  )
@@ -315,9 +389,15 @@
315
389
  }
316
390
  );
317
391
 
318
- if (!foundValidator && settings.builtInValidators[el.toLowerCase()]) {
319
-
320
- var validator = $.extend(true, {}, settings.builtInValidators[el.toLowerCase()]);
392
+ if (
393
+ !foundValidator &&
394
+ settings.builtInValidators[el.toLowerCase()]
395
+ ) {
396
+ var validator = $.extend(
397
+ true,
398
+ {},
399
+ settings.builtInValidators[el.toLowerCase()]
400
+ );
321
401
  if (hasOverrideMessage) {
322
402
  validator.message = message;
323
403
  }
@@ -328,17 +408,22 @@
328
408
  } else {
329
409
  $.each(
330
410
  settings.validatorTypes,
331
- function(validatorTemplateType, validatorTemplate) {
411
+ function (validatorTemplateType, validatorTemplate) {
332
412
  if (validators[validatorTemplateType] === undefined) {
333
413
  validators[validatorTemplateType] = [];
334
414
  }
335
- if (!foundValidator && validatorType === validatorTemplateType.toLowerCase()) {
336
- $this.data("validation" + el + formatValidatorName(validatorTemplate.name), validator[validatorTemplate.name.toLowerCase()]);
415
+ if (
416
+ !foundValidator &&
417
+ validatorType === validatorTemplateType.toLowerCase()
418
+ ) {
419
+ $this.data(
420
+ "validation" +
421
+ el +
422
+ formatValidatorName(validatorTemplate.name),
423
+ validator[validatorTemplate.name.toLowerCase()]
424
+ );
337
425
  validators[validatorType].push(
338
- $.extend(
339
- validator,
340
- validatorTemplate.init($this, el)
341
- )
426
+ $.extend(validator, validatorTemplate.init($this, el))
342
427
  );
343
428
  foundValidator = true;
344
429
  }
@@ -358,85 +443,80 @@
358
443
 
359
444
  $helpBlock.data(
360
445
  "original-contents",
361
- (
362
- $helpBlock.data("original-contents") ?
363
- $helpBlock.data("original-contents") :
364
- $helpBlock.html()
365
- )
446
+ $helpBlock.data("original-contents")
447
+ ? $helpBlock.data("original-contents")
448
+ : $helpBlock.html()
366
449
  );
367
450
 
368
451
  $helpBlock.data(
369
452
  "original-role",
370
- (
371
- $helpBlock.data("original-role") ?
372
- $helpBlock.data("original-role") :
373
- $helpBlock.attr("role")
374
- )
453
+ $helpBlock.data("original-role")
454
+ ? $helpBlock.data("original-role")
455
+ : $helpBlock.attr("role")
375
456
  );
376
457
 
377
458
  $controlGroup.data(
378
459
  "original-classes",
379
- (
380
- $controlGroup.data("original-clases") ?
381
- $controlGroup.data("original-classes") :
382
- $controlGroup.attr("class")
383
- )
460
+ $controlGroup.data("original-clases")
461
+ ? $controlGroup.data("original-classes")
462
+ : $controlGroup.attr("class")
384
463
  );
385
464
 
386
465
  $this.data(
387
466
  "original-aria-invalid",
388
- (
389
- $this.data("original-aria-invalid") ?
390
- $this.data("original-aria-invalid") :
391
- $this.attr("aria-invalid")
392
- )
467
+ $this.data("original-aria-invalid")
468
+ ? $this.data("original-aria-invalid")
469
+ : $this.attr("aria-invalid")
393
470
  );
394
471
 
395
472
  // =============================================================
396
473
  // VALIDATION
397
474
  // =============================================================
398
475
 
399
- $this.bind(
400
- "validation.validation",
401
- function(event, params) {
402
-
403
- var value = getValue($this);
404
-
405
- // Get a list of the errors to apply
406
- var errorsFound = [];
407
-
408
- $.each(validators, function(validatorType, validatorTypeArray) {
409
- if (value || value.length || (params && params.includeEmpty) || (!!settings.validatorTypes[validatorType].blockSubmit && params && !!params.submitting)) {
410
- $.each(validatorTypeArray, function(i, validator) {
411
- if (settings.validatorTypes[validatorType].validate($this, value, validator)) {
412
- errorsFound.push(validator.message);
413
- }
414
- });
415
- }
416
- });
476
+ $this.bind("validation.validation", function (event, params) {
477
+ var value = getValue($this);
478
+
479
+ // Get a list of the errors to apply
480
+ var errorsFound = [];
481
+
482
+ $.each(validators, function (validatorType, validatorTypeArray) {
483
+ if (
484
+ value ||
485
+ value.length ||
486
+ (params && params.includeEmpty) ||
487
+ (!!settings.validatorTypes[validatorType].blockSubmit &&
488
+ params &&
489
+ !!params.submitting)
490
+ ) {
491
+ $.each(validatorTypeArray, function (i, validator) {
492
+ if (
493
+ settings.validatorTypes[validatorType].validate(
494
+ $this,
495
+ value,
496
+ validator
497
+ )
498
+ ) {
499
+ errorsFound.push(validator.message);
500
+ }
501
+ });
502
+ }
503
+ });
417
504
 
418
- return errorsFound;
419
- }
420
- );
505
+ return errorsFound;
506
+ });
421
507
 
422
- $this.bind(
423
- "getValidators.validation",
424
- function() {
425
- return validators;
426
- }
427
- );
508
+ $this.bind("getValidators.validation", function () {
509
+ return validators;
510
+ });
428
511
 
429
512
  // =============================================================
430
513
  // WATCH FOR CHANGES
431
514
  // =============================================================
432
- $this.bind(
433
- "submit.validation",
434
- function() {
435
- return $this.triggerHandler("change.validation", {
436
- submitting: true
437
- });
438
- }
439
- );
515
+ $this.bind("submit.validation", function () {
516
+ return $this.triggerHandler("change.validation", {
517
+ submitting: true,
518
+ });
519
+ });
440
520
  $this.bind(
441
521
  [
442
522
  "keyup",
@@ -445,28 +525,39 @@
445
525
  "click",
446
526
  "keydown",
447
527
  "keypress",
448
- "change"
528
+ "change",
449
529
  ].join(".validation ") + ".validation",
450
- function(e, params) {
451
-
530
+ function (e, params) {
452
531
  var value = getValue($this);
453
532
 
454
533
  var errorsFound = [];
455
534
 
456
- $controlGroup.find("input,textarea,select").each(function(i, el) {
457
- var oldCount = errorsFound.length;
458
- $.each($(el).triggerHandler("validation.validation", params), function(j, message) {
459
- errorsFound.push(message);
535
+ $controlGroup
536
+ .find("input,textarea,select")
537
+ .each(function (i, el) {
538
+ var oldCount = errorsFound.length;
539
+ $.each(
540
+ $(el).triggerHandler("validation.validation", params),
541
+ function (j, message) {
542
+ errorsFound.push(message);
543
+ }
544
+ );
545
+ if (errorsFound.length > oldCount) {
546
+ $(el).attr("aria-invalid", "true");
547
+ } else {
548
+ var original = $this.data("original-aria-invalid");
549
+ $(el).attr(
550
+ "aria-invalid",
551
+ original !== undefined ? original : false
552
+ );
553
+ }
460
554
  });
461
- if (errorsFound.length > oldCount) {
462
- $(el).attr("aria-invalid", "true");
463
- } else {
464
- var original = $this.data("original-aria-invalid");
465
- $(el).attr("aria-invalid", (original !== undefined ? original : false));
466
- }
467
- });
468
555
 
469
- $form.find("input,select,textarea").not($this).not("[name=\"" + $this.attr("name") + "\"]").trigger("validationLostFocus.validation");
556
+ $form
557
+ .find("input,select,textarea")
558
+ .not($this)
559
+ .not('[name="' + $this.attr("name") + '"]')
560
+ .trigger("validationLostFocus.validation");
470
561
 
471
562
  errorsFound = $.unique(errorsFound.sort());
472
563
 
@@ -476,14 +567,27 @@
476
567
  $controlGroup.removeClass("success error").addClass("warning");
477
568
 
478
569
  // How many errors did we find?
479
- if (settings.options.semanticallyStrict && errorsFound.length === 1) {
570
+ if (
571
+ settings.options.semanticallyStrict &&
572
+ errorsFound.length === 1
573
+ ) {
480
574
  // Only one? Being strict? Just output it.
481
- $helpBlock.html(errorsFound[0] +
482
- (settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : ""));
575
+ $helpBlock.html(
576
+ errorsFound[0] +
577
+ (settings.options.prependExistingHelpBlock
578
+ ? $helpBlock.data("original-contents")
579
+ : "")
580
+ );
483
581
  } else {
484
582
  // Multiple? Being sloppy? Glue them together into an UL.
485
- $helpBlock.html("<ul role=\"alert\"><li>" + errorsFound.join("</li><li>") + "</li></ul>" +
486
- (settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : ""));
583
+ $helpBlock.html(
584
+ '<ul role="alert"><li>' +
585
+ errorsFound.join("</li><li>") +
586
+ "</li></ul>" +
587
+ (settings.options.prependExistingHelpBlock
588
+ ? $helpBlock.data("original-contents")
589
+ : "")
590
+ );
487
591
  }
488
592
  } else {
489
593
  $controlGroup.removeClass("warning error success");
@@ -498,92 +602,84 @@
498
602
  }
499
603
  }
500
604
  );
501
- $this.bind("validationLostFocus.validation", function() {
605
+ $this.bind("validationLostFocus.validation", function () {
502
606
  $controlGroup.removeClass("success");
503
607
  });
504
608
  });
505
609
  },
506
- destroy: function() {
507
-
508
- return this.each(
509
- function() {
510
-
511
- var
512
- $this = $(this),
513
- $controlGroup = $this.parents(".form-group").first(),
514
- $helpBlock = $controlGroup.find(".help-block").first();
515
-
516
- // remove our events
517
- $this.unbind('.validation'); // events are namespaced.
518
- // reset help text
519
- $helpBlock.html($helpBlock.data("original-contents"));
520
- // reset classes
521
- $controlGroup.attr("class", $controlGroup.data("original-classes"));
522
- // reset aria
523
- $this.attr("aria-invalid", $this.data("original-aria-invalid"));
524
- // reset role
525
- $helpBlock.attr("role", $this.data("original-role"));
526
- // remove all elements we created
527
- if (createdElements.indexOf($helpBlock[0]) > -1) {
528
- $helpBlock.remove();
529
- }
530
-
610
+ destroy: function () {
611
+ return this.each(function () {
612
+ var $this = $(this),
613
+ $controlGroup = $this.parents(".form-group").first(),
614
+ $helpBlock = $controlGroup.find(".help-block").first();
615
+
616
+ // remove our events
617
+ $this.unbind(".validation"); // events are namespaced.
618
+ // reset help text
619
+ $helpBlock.html($helpBlock.data("original-contents"));
620
+ // reset classes
621
+ $controlGroup.attr("class", $controlGroup.data("original-classes"));
622
+ // reset aria
623
+ $this.attr("aria-invalid", $this.data("original-aria-invalid"));
624
+ // reset role
625
+ $helpBlock.attr("role", $this.data("original-role"));
626
+ // remove all elements we created
627
+ if (createdElements.indexOf($helpBlock[0]) > -1) {
628
+ $helpBlock.remove();
531
629
  }
532
- );
533
-
630
+ });
534
631
  },
535
- collectErrors: function(includeEmpty) {
536
-
632
+ collectErrors: function (includeEmpty) {
537
633
  var errorMessages = {};
538
- this.each(function(i, el) {
634
+ this.each(function (i, el) {
539
635
  var $el = $(el);
540
636
  var name = $el.attr("name");
541
637
  var errors = $el.triggerHandler("validation.validation", {
542
- includeEmpty: true
638
+ includeEmpty: true,
543
639
  });
544
640
  errorMessages[name] = $.extend(true, errors, errorMessages[name]);
545
641
  });
546
642
 
547
- $.each(errorMessages, function(i, el) {
643
+ $.each(errorMessages, function (i, el) {
548
644
  if (el.length === 0) {
549
645
  delete errorMessages[i];
550
646
  }
551
647
  });
552
648
 
553
649
  return errorMessages;
554
-
555
650
  },
556
- hasErrors: function() {
557
-
651
+ hasErrors: function () {
558
652
  var errorMessages = [];
559
653
 
560
- this.each(function(i, el) {
654
+ this.each(function (i, el) {
561
655
  errorMessages = errorMessages.concat(
562
- $(el).triggerHandler("getValidators.validation") ? $(el).triggerHandler("validation.validation", {
563
- submitting: true
564
- }) : []
656
+ $(el).triggerHandler("getValidators.validation")
657
+ ? $(el).triggerHandler("validation.validation", {
658
+ submitting: true,
659
+ })
660
+ : []
565
661
  );
566
662
  });
567
663
 
568
- return (errorMessages.length > 0);
664
+ return errorMessages.length > 0;
569
665
  },
570
- override: function(newDefaults) {
666
+ override: function (newDefaults) {
571
667
  defaults = $.extend(true, defaults, newDefaults);
572
- }
668
+ },
573
669
  },
574
670
  validatorTypes: {
575
671
  callback: {
576
672
  name: "callback",
577
- init: function($this, name) {
673
+ init: function ($this, name) {
578
674
  return {
579
675
  validatorName: name,
580
676
  callback: $this.data("validation" + name + "Callback"),
581
677
  lastValue: $this.val(),
582
678
  lastValid: true,
583
- lastFinished: true
679
+ lastFinished: true,
584
680
  };
585
681
  },
586
- validate: function($this, value, validator) {
682
+ validate: function ($this, value, validator) {
587
683
  if (validator.lastValue === value && validator.lastFinished) {
588
684
  return !validator.lastValid;
589
685
  }
@@ -600,16 +696,19 @@
600
696
  window,
601
697
  $this,
602
698
  value,
603
- function(data) {
699
+ function (data) {
604
700
  if (rrjqbvValidator.lastValue === data.value) {
605
701
  rrjqbvValidator.lastValid = data.valid;
606
702
  if (data.message) {
607
703
  rrjqbvValidator.message = data.message;
608
704
  }
609
705
  rrjqbvValidator.lastFinished = true;
610
- rrjqbvThis.data("validation" + rrjqbvValidator.validatorName + "Message", rrjqbvValidator.message);
706
+ rrjqbvThis.data(
707
+ "validation" + rrjqbvValidator.validatorName + "Message",
708
+ rrjqbvValidator.message
709
+ );
611
710
  // Timeout is set to avoid problems with the events being considered 'already fired'
612
- setTimeout(function() {
711
+ setTimeout(function () {
613
712
  rrjqbvThis.trigger("change.validation");
614
713
  }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
615
714
  }
@@ -618,22 +717,24 @@
618
717
  }
619
718
 
620
719
  return false;
621
-
622
- }
720
+ },
623
721
  },
624
722
  ajax: {
625
723
  name: "ajax",
626
- init: function($this, name) {
724
+ init: function ($this, name) {
627
725
  return {
628
726
  validatorName: name,
629
727
  url: $this.data("validation" + name + "Ajax"),
630
728
  lastValue: $this.val(),
631
729
  lastValid: true,
632
- lastFinished: true
730
+ lastFinished: true,
633
731
  };
634
732
  },
635
- validate: function($this, value, validator) {
636
- if ("" + validator.lastValue === "" + value && validator.lastFinished === true) {
733
+ validate: function ($this, value, validator) {
734
+ if (
735
+ "" + validator.lastValue === "" + value &&
736
+ validator.lastFinished === true
737
+ ) {
637
738
  return validator.lastValid === false;
638
739
  }
639
740
 
@@ -645,254 +746,305 @@
645
746
  url: validator.url,
646
747
  data: "value=" + value + "&field=" + $this.attr("name"),
647
748
  dataType: "json",
648
- success: function(data) {
749
+ success: function (data) {
649
750
  if ("" + validator.lastValue === "" + data.value) {
650
- validator.lastValid = !!(data.valid);
751
+ validator.lastValid = !!data.valid;
651
752
  if (data.message) {
652
753
  validator.message = data.message;
653
754
  }
654
755
  validator.lastFinished = true;
655
- $this.data("validation" + validator.validatorName + "Message", validator.message);
756
+ $this.data(
757
+ "validation" + validator.validatorName + "Message",
758
+ validator.message
759
+ );
656
760
  // Timeout is set to avoid problems with the events being considered 'already fired'
657
- setTimeout(function() {
761
+ setTimeout(function () {
658
762
  $this.trigger("change.validation");
659
763
  }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
660
764
  }
661
765
  },
662
- failure: function() {
766
+ failure: function () {
663
767
  validator.lastValid = true;
664
768
  validator.message = "ajax call failed";
665
769
  validator.lastFinished = true;
666
- $this.data("validation" + validator.validatorName + "Message", validator.message);
770
+ $this.data(
771
+ "validation" + validator.validatorName + "Message",
772
+ validator.message
773
+ );
667
774
  // Timeout is set to avoid problems with the events being considered 'already fired'
668
- setTimeout(function() {
775
+ setTimeout(function () {
669
776
  $this.trigger("change.validation");
670
777
  }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
671
- }
778
+ },
672
779
  });
673
780
  }
674
781
 
675
782
  return false;
676
-
677
- }
783
+ },
678
784
  },
679
785
  regex: {
680
786
  name: "regex",
681
- init: function($this, name) {
787
+ init: function ($this, name) {
682
788
  return {
683
- regex: regexFromString($this.data("validation" + name + "Regex"))
789
+ regex: regexFromString($this.data("validation" + name + "Regex")),
684
790
  };
685
791
  },
686
- validate: function($this, value, validator) {
687
- return (!validator.regex.test(value) && !validator.negative) ||
688
- (validator.regex.test(value) && validator.negative);
689
- }
792
+ validate: function ($this, value, validator) {
793
+ return (
794
+ (!validator.regex.test(value) && !validator.negative) ||
795
+ (validator.regex.test(value) && validator.negative)
796
+ );
797
+ },
690
798
  },
691
799
  required: {
692
800
  name: "required",
693
- init: function($this, name) {
801
+ init: function ($this, name) {
694
802
  return {};
695
803
  },
696
- validate: function($this, value, validator) {
697
- return !!(value.length === 0 && !validator.negative) ||
698
- !!(value.length > 0 && validator.negative);
804
+ validate: function ($this, value, validator) {
805
+ return (
806
+ !!(value.length === 0 && !validator.negative) ||
807
+ !!(value.length > 0 && validator.negative)
808
+ );
699
809
  },
700
- blockSubmit: true
810
+ blockSubmit: true,
701
811
  },
702
812
  match: {
703
813
  name: "match",
704
- init: function($this, name) {
705
- var element = $this.parents("form").first().find("[name=\"" + $this.data("validation" + name + "Match") + "\"]").first();
706
- element.bind("validation.validation", function() {
814
+ init: function ($this, name) {
815
+ var element = $this
816
+ .parents("form")
817
+ .first()
818
+ .find('[name="' + $this.data("validation" + name + "Match") + '"]')
819
+ .first();
820
+ element.bind("validation.validation", function () {
707
821
  $this.trigger("change.validation", {
708
- submitting: true
822
+ submitting: true,
709
823
  });
710
824
  });
711
825
  return {
712
- "element": element
826
+ element: element,
713
827
  };
714
828
  },
715
- validate: function($this, value, validator) {
716
- return (value !== validator.element.val() && !validator.negative) ||
717
- (value === validator.element.val() && validator.negative);
829
+ validate: function ($this, value, validator) {
830
+ return (
831
+ (value !== validator.element.val() && !validator.negative) ||
832
+ (value === validator.element.val() && validator.negative)
833
+ );
718
834
  },
719
- blockSubmit: true
835
+ blockSubmit: true,
720
836
  },
721
837
  max: {
722
838
  name: "max",
723
- init: function($this, name) {
839
+ init: function ($this, name) {
724
840
  return {
725
- max: $this.data("validation" + name + "Max")
841
+ max: $this.data("validation" + name + "Max"),
726
842
  };
727
843
  },
728
- validate: function($this, value, validator) {
729
- return (parseFloat(value, 10) > parseFloat(validator.max, 10) && !validator.negative) ||
730
- (parseFloat(value, 10) <= parseFloat(validator.max, 10) && validator.negative);
731
- }
844
+ validate: function ($this, value, validator) {
845
+ return (
846
+ (parseFloat(value, 10) > parseFloat(validator.max, 10) &&
847
+ !validator.negative) ||
848
+ (parseFloat(value, 10) <= parseFloat(validator.max, 10) &&
849
+ validator.negative)
850
+ );
851
+ },
732
852
  },
733
853
  min: {
734
854
  name: "min",
735
- init: function($this, name) {
855
+ init: function ($this, name) {
736
856
  return {
737
- min: $this.data("validation" + name + "Min")
857
+ min: $this.data("validation" + name + "Min"),
738
858
  };
739
859
  },
740
- validate: function($this, value, validator) {
741
- return (parseFloat(value) < parseFloat(validator.min) && !validator.negative) ||
742
- (parseFloat(value) >= parseFloat(validator.min) && validator.negative);
743
- }
860
+ validate: function ($this, value, validator) {
861
+ return (
862
+ (parseFloat(value) < parseFloat(validator.min) &&
863
+ !validator.negative) ||
864
+ (parseFloat(value) >= parseFloat(validator.min) &&
865
+ validator.negative)
866
+ );
867
+ },
744
868
  },
745
869
  maxlength: {
746
870
  name: "maxlength",
747
- init: function($this, name) {
871
+ init: function ($this, name) {
748
872
  return {
749
- maxlength: $this.data("validation" + name + "Maxlength")
873
+ maxlength: $this.data("validation" + name + "Maxlength"),
750
874
  };
751
875
  },
752
- validate: function($this, value, validator) {
753
- return ((value.length > validator.maxlength) && !validator.negative) ||
754
- ((value.length <= validator.maxlength) && validator.negative);
755
- }
876
+ validate: function ($this, value, validator) {
877
+ return (
878
+ (value.length > validator.maxlength && !validator.negative) ||
879
+ (value.length <= validator.maxlength && validator.negative)
880
+ );
881
+ },
756
882
  },
757
883
  minlength: {
758
884
  name: "minlength",
759
- init: function($this, name) {
885
+ init: function ($this, name) {
760
886
  return {
761
- minlength: $this.data("validation" + name + "Minlength")
887
+ minlength: $this.data("validation" + name + "Minlength"),
762
888
  };
763
889
  },
764
- validate: function($this, value, validator) {
765
- return ((value.length < validator.minlength) && !validator.negative) ||
766
- ((value.length >= validator.minlength) && validator.negative);
767
- }
890
+ validate: function ($this, value, validator) {
891
+ return (
892
+ (value.length < validator.minlength && !validator.negative) ||
893
+ (value.length >= validator.minlength && validator.negative)
894
+ );
895
+ },
768
896
  },
769
897
  maxchecked: {
770
898
  name: "maxchecked",
771
- init: function($this, name) {
772
- var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]");
773
- elements.bind("click.validation", function() {
899
+ init: function ($this, name) {
900
+ var elements = $this
901
+ .parents("form")
902
+ .first()
903
+ .find('[name="' + $this.attr("name") + '"]');
904
+ elements.bind("click.validation", function () {
774
905
  $this.trigger("change.validation", {
775
- includeEmpty: true
906
+ includeEmpty: true,
776
907
  });
777
908
  });
778
909
  return {
779
910
  maxchecked: $this.data("validation" + name + "Maxchecked"),
780
- elements: elements
911
+ elements: elements,
781
912
  };
782
913
  },
783
- validate: function($this, value, validator) {
784
- return (validator.elements.filter(":checked").length > validator.maxchecked && !validator.negative) ||
785
- (validator.elements.filter(":checked").length <= validator.maxchecked && validator.negative);
914
+ validate: function ($this, value, validator) {
915
+ return (
916
+ (validator.elements.filter(":checked").length >
917
+ validator.maxchecked &&
918
+ !validator.negative) ||
919
+ (validator.elements.filter(":checked").length <=
920
+ validator.maxchecked &&
921
+ validator.negative)
922
+ );
786
923
  },
787
- blockSubmit: true
924
+ blockSubmit: true,
788
925
  },
789
926
  minchecked: {
790
927
  name: "minchecked",
791
- init: function($this, name) {
792
- var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]");
793
- elements.bind("click.validation", function() {
928
+ init: function ($this, name) {
929
+ var elements = $this
930
+ .parents("form")
931
+ .first()
932
+ .find('[name="' + $this.attr("name") + '"]');
933
+ elements.bind("click.validation", function () {
794
934
  $this.trigger("change.validation", {
795
- includeEmpty: true
935
+ includeEmpty: true,
796
936
  });
797
937
  });
798
938
  return {
799
939
  minchecked: $this.data("validation" + name + "Minchecked"),
800
- elements: elements
940
+ elements: elements,
801
941
  };
802
942
  },
803
- validate: function($this, value, validator) {
804
- return (validator.elements.filter(":checked").length < validator.minchecked && !validator.negative) ||
805
- (validator.elements.filter(":checked").length >= validator.minchecked && validator.negative);
943
+ validate: function ($this, value, validator) {
944
+ return (
945
+ (validator.elements.filter(":checked").length <
946
+ validator.minchecked &&
947
+ !validator.negative) ||
948
+ (validator.elements.filter(":checked").length >=
949
+ validator.minchecked &&
950
+ validator.negative)
951
+ );
806
952
  },
807
- blockSubmit: true
808
- }
953
+ blockSubmit: true,
954
+ },
809
955
  },
810
956
  builtInValidators: {
811
957
  email: {
812
958
  name: "Email",
813
959
  type: "shortcut",
814
- shortcut: "validemail"
960
+ shortcut: "validemail",
815
961
  },
816
962
  validemail: {
817
963
  name: "Validemail",
818
964
  type: "regex",
819
- regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\.[A-Za-z]{2,4}",
820
- message: "Not a valid email address<!-- data-validator-validemail-message to override -->"
965
+ regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}",
966
+ message:
967
+ "Not a valid email address<!-- data-validator-validemail-message to override -->",
821
968
  },
822
969
  passwordagain: {
823
970
  name: "Passwordagain",
824
971
  type: "match",
825
972
  match: "password",
826
- message: "Does not match the given password<!-- data-validator-paswordagain-message to override -->"
973
+ message:
974
+ "Does not match the given password<!-- data-validator-paswordagain-message to override -->",
827
975
  },
828
976
  positive: {
829
977
  name: "Positive",
830
978
  type: "shortcut",
831
- shortcut: "number,positivenumber"
979
+ shortcut: "number,positivenumber",
832
980
  },
833
981
  negative: {
834
982
  name: "Negative",
835
983
  type: "shortcut",
836
- shortcut: "number,negativenumber"
984
+ shortcut: "number,negativenumber",
837
985
  },
838
986
  number: {
839
987
  name: "Number",
840
988
  type: "regex",
841
- regex: "([+-]?\\\d+(\\\.\\\d*)?([eE][+-]?[0-9]+)?)?",
842
- message: "Must be a number<!-- data-validator-number-message to override -->"
989
+ regex: "([+-]?\\d+(\\.\\d*)?([eE][+-]?[0-9]+)?)?",
990
+ message:
991
+ "Must be a number<!-- data-validator-number-message to override -->",
843
992
  },
844
993
  integer: {
845
994
  name: "Integer",
846
995
  type: "regex",
847
- regex: "[+-]?\\\d+",
848
- message: "No decimal places allowed<!-- data-validator-integer-message to override -->"
996
+ regex: "[+-]?\\d+",
997
+ message:
998
+ "No decimal places allowed<!-- data-validator-integer-message to override -->",
849
999
  },
850
1000
  positivenumber: {
851
1001
  name: "Positivenumber",
852
1002
  type: "min",
853
1003
  min: 0,
854
- message: "Must be a positive number<!-- data-validator-positivenumber-message to override -->"
1004
+ message:
1005
+ "Must be a positive number<!-- data-validator-positivenumber-message to override -->",
855
1006
  },
856
1007
  negativenumber: {
857
1008
  name: "Negativenumber",
858
1009
  type: "max",
859
1010
  max: 0,
860
- message: "Must be a negative number<!-- data-validator-negativenumber-message to override -->"
1011
+ message:
1012
+ "Must be a negative number<!-- data-validator-negativenumber-message to override -->",
861
1013
  },
862
1014
  required: {
863
1015
  name: "Required",
864
1016
  type: "required",
865
- message: "This is required<!-- data-validator-required-message to override -->"
1017
+ message:
1018
+ "This is required<!-- data-validator-required-message to override -->",
866
1019
  },
867
1020
  checkone: {
868
1021
  name: "Checkone",
869
1022
  type: "minchecked",
870
1023
  minchecked: 1,
871
- message: "Check at least one option<!-- data-validation-checkone-message to override -->"
872
- }
873
- }
1024
+ message:
1025
+ "Check at least one option<!-- data-validation-checkone-message to override -->",
1026
+ },
1027
+ },
874
1028
  };
875
1029
 
876
- var formatValidatorName = function(name) {
877
- return name
878
- .toLowerCase()
879
- .replace(
880
- /(^|\s)([a-z])/g,
881
- function(m, p1, p2) {
882
- return p1 + p2.toUpperCase();
883
- }
884
- );
1030
+ var formatValidatorName = function (name) {
1031
+ return name.toLowerCase().replace(/(^|\s)([a-z])/g, function (m, p1, p2) {
1032
+ return p1 + p2.toUpperCase();
1033
+ });
885
1034
  };
886
1035
 
887
- var getValue = function($this) {
1036
+ var getValue = function ($this) {
888
1037
  // Extract the value we're talking about
889
1038
  var value = $this.val();
890
1039
  var type = $this.attr("type");
891
1040
  if (type === "checkbox") {
892
- value = ($this.is(":checked") ? value : "");
1041
+ value = $this.is(":checked") ? value : "";
893
1042
  }
894
1043
  if (type === "radio") {
895
- value = ($('input[name="' + $this.attr("name") + '"]:checked').length > 0 ? value : "");
1044
+ value =
1045
+ $('input[name="' + $this.attr("name") + '"]:checked').length > 0
1046
+ ? value
1047
+ : "";
896
1048
  }
897
1049
  return value;
898
1050
  };
@@ -907,7 +1059,7 @@
907
1059
  * http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string#answer-359910
908
1060
  * Short link: http://tinyurl.com/executeFunctionByName
909
1061
  **/
910
- function executeFunctionByName(functionName, context /*, args*/ ) {
1062
+ function executeFunctionByName(functionName, context /*, args*/) {
911
1063
  var args = Array.prototype.slice.call(arguments).splice(2);
912
1064
  var namespaces = functionName.split(".");
913
1065
  var func = namespaces.pop();
@@ -917,21 +1069,25 @@
917
1069
  return context[func].apply(this, args);
918
1070
  }
919
1071
 
920
- $.fn.jqBootstrapValidation = function(method) {
921
-
1072
+ $.fn.jqBootstrapValidation = function (method) {
922
1073
  if (defaults.methods[method]) {
923
- return defaults.methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
924
- } else if (typeof method === 'object' || !method) {
1074
+ return defaults.methods[method].apply(
1075
+ this,
1076
+ Array.prototype.slice.call(arguments, 1)
1077
+ );
1078
+ } else if (typeof method === "object" || !method) {
925
1079
  return defaults.methods.init.apply(this, arguments);
926
1080
  } else {
927
- $.error('Method ' + method + ' does not exist on jQuery.jqBootstrapValidation');
1081
+ $.error(
1082
+ "Method " + method + " does not exist on jQuery.jqBootstrapValidation"
1083
+ );
928
1084
  return null;
929
1085
  }
930
-
931
1086
  };
932
1087
 
933
- $.jqBootstrapValidation = function(options) {
934
- $(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this, arguments);
1088
+ $.jqBootstrapValidation = function (options) {
1089
+ $(":input")
1090
+ .not("[type=image],[type=submit]")
1091
+ .jqBootstrapValidation.apply(this, arguments);
935
1092
  };
936
-
937
1093
  })(jQuery);