jquery-validation-rails 1.12.0 → 1.13.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/app/assets/javascripts/jquery.validate.additional-methods.js +181 -74
  4. data/app/assets/javascripts/jquery.validate.js +407 -335
  5. data/app/assets/javascripts/jquery.validate.localization/messages_ar.js +29 -21
  6. data/app/assets/javascripts/jquery.validate.localization/messages_bg.js +29 -21
  7. data/app/assets/javascripts/jquery.validate.localization/messages_ca.js +29 -21
  8. data/app/assets/javascripts/jquery.validate.localization/messages_cs.js +29 -21
  9. data/app/assets/javascripts/jquery.validate.localization/messages_da.js +26 -18
  10. data/app/assets/javascripts/jquery.validate.localization/messages_de.js +26 -18
  11. data/app/assets/javascripts/jquery.validate.localization/messages_el.js +29 -21
  12. data/app/assets/javascripts/jquery.validate.localization/messages_es.js +32 -24
  13. data/app/assets/javascripts/jquery.validate.localization/messages_es_AR.js +32 -24
  14. data/app/assets/javascripts/jquery.validate.localization/messages_et.js +27 -19
  15. data/app/assets/javascripts/jquery.validate.localization/messages_eu.js +29 -21
  16. data/app/assets/javascripts/jquery.validate.localization/messages_fa.js +32 -21
  17. data/app/assets/javascripts/jquery.validate.localization/messages_fi.js +27 -19
  18. data/app/assets/javascripts/jquery.validate.localization/messages_fr.js +55 -46
  19. data/app/assets/javascripts/jquery.validate.localization/messages_gl.js +38 -0
  20. data/app/assets/javascripts/jquery.validate.localization/messages_he.js +29 -21
  21. data/app/assets/javascripts/jquery.validate.localization/messages_hr.js +29 -21
  22. data/app/assets/javascripts/jquery.validate.localization/messages_hu.js +28 -20
  23. data/app/assets/javascripts/jquery.validate.localization/messages_id.js +28 -20
  24. data/app/assets/javascripts/jquery.validate.localization/messages_is.js +27 -19
  25. data/app/assets/javascripts/jquery.validate.localization/messages_it.js +32 -24
  26. data/app/assets/javascripts/jquery.validate.localization/messages_ja.js +29 -21
  27. data/app/assets/javascripts/jquery.validate.localization/messages_ka.js +29 -21
  28. data/app/assets/javascripts/jquery.validate.localization/messages_kk.js +29 -21
  29. data/app/assets/javascripts/jquery.validate.localization/messages_ko.js +29 -21
  30. data/app/assets/javascripts/jquery.validate.localization/messages_lt.js +29 -21
  31. data/app/assets/javascripts/jquery.validate.localization/messages_lv.js +29 -21
  32. data/app/assets/javascripts/jquery.validate.localization/messages_my.js +29 -21
  33. data/app/assets/javascripts/jquery.validate.localization/messages_nl.js +38 -30
  34. data/app/assets/javascripts/jquery.validate.localization/messages_no.js +29 -21
  35. data/app/assets/javascripts/jquery.validate.localization/messages_pl.js +29 -21
  36. data/app/assets/javascripts/jquery.validate.localization/messages_pt_BR.js +33 -24
  37. data/app/assets/javascripts/jquery.validate.localization/messages_pt_PT.js +32 -24
  38. data/app/assets/javascripts/jquery.validate.localization/messages_ro.js +29 -21
  39. data/app/assets/javascripts/jquery.validate.localization/messages_ru.js +29 -21
  40. data/app/assets/javascripts/jquery.validate.localization/messages_si.js +29 -21
  41. data/app/assets/javascripts/jquery.validate.localization/messages_sk.js +26 -18
  42. data/app/assets/javascripts/jquery.validate.localization/messages_sl.js +29 -21
  43. data/app/assets/javascripts/jquery.validate.localization/messages_sr.js +29 -21
  44. data/app/assets/javascripts/jquery.validate.localization/messages_sr_lat.js +29 -21
  45. data/app/assets/javascripts/jquery.validate.localization/messages_sv.js +27 -19
  46. data/app/assets/javascripts/jquery.validate.localization/messages_th.js +29 -21
  47. data/app/assets/javascripts/jquery.validate.localization/messages_tj.js +29 -21
  48. data/app/assets/javascripts/jquery.validate.localization/messages_tr.js +29 -21
  49. data/app/assets/javascripts/jquery.validate.localization/messages_uk.js +29 -21
  50. data/app/assets/javascripts/jquery.validate.localization/messages_vi.js +29 -21
  51. data/app/assets/javascripts/jquery.validate.localization/messages_zh.js +29 -21
  52. data/app/assets/javascripts/jquery.validate.localization/messages_zh_TW.js +29 -21
  53. data/app/assets/javascripts/jquery.validate.localization/methods_de.js +11 -1
  54. data/app/assets/javascripts/jquery.validate.localization/methods_es_CL.js +11 -1
  55. data/app/assets/javascripts/jquery.validate.localization/methods_fi.js +22 -0
  56. data/app/assets/javascripts/jquery.validate.localization/methods_nl.js +11 -1
  57. data/app/assets/javascripts/jquery.validate.localization/methods_pt.js +11 -1
  58. data/lib/jquery/validation/rails/version.rb +1 -1
  59. metadata +4 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 55f9e31badb7154b56ce386a3e8644de647583ac
4
- data.tar.gz: 70216628f38ad1d2556f0021954b1f89d778baa9
3
+ metadata.gz: 4691809abf49bdbe7976df0d05ea7f7cbc626f20
4
+ data.tar.gz: 087209bab6f17cccb3c95cf47ae1d98f883e5613
5
5
  SHA512:
6
- metadata.gz: 9f9086a2a76137bc12e03cc50100c538b02489b4c99f93086efb5fca346a53421e2120ddd737f27edfe7ad5b125275bedaa52997cc7e3107be3b5138261ac7c7
7
- data.tar.gz: 4cbe6f1e9b6fb205fbec648850ef1412e105433888a998714d607bc9025c5e8c64400b896d358f5e3fed61a0d077d8da51c35d42e11573d7000062b90e171dd6
6
+ metadata.gz: fd3d64b8fe0c49136c4482107d68e3a461d0b88dfad33171c49c6c01fff65ab2cf16544b79fa2665cb3caf072f189ca57775dc5cfdd7521279b69960d0cf665c
7
+ data.tar.gz: 36b29911708276c3ceec81c33cb7d48b4978248ec1fdeafcc0d80cac3e892da17da15e6e89bea68e1b50c26a451b43717816b2bd7159075f2bd93f9e0c923ea0
@@ -1,3 +1,7 @@
1
+ ## 1.13.1
2
+
3
+ * Update included jquery.validation files to 1.13.1
4
+
1
5
  ## 1.12.0
2
6
 
3
7
  * Update included jquery.validation files to 1.12.0
@@ -1,11 +1,19 @@
1
1
  /*!
2
- * jQuery Validation Plugin v1.12.0
2
+ * jQuery Validation Plugin v1.13.1
3
3
  *
4
4
  * http://jqueryvalidation.org/
5
5
  *
6
6
  * Copyright (c) 2014 Jörn Zaefferer
7
7
  * Released under the MIT license
8
8
  */
9
+ (function( factory ) {
10
+ if ( typeof define === "function" && define.amd ) {
11
+ define( ["jquery", "./jquery.validate"], factory );
12
+ } else {
13
+ factory( jQuery );
14
+ }
15
+ }(function( $ ) {
16
+
9
17
  (function() {
10
18
 
11
19
  function stripHtml(value) {
@@ -15,24 +23,24 @@
15
23
  .replace(/[.(),;:!?%#$'\"_+=\/\-“”’]*/g, "");
16
24
  }
17
25
 
18
- jQuery.validator.addMethod("maxWords", function(value, element, params) {
26
+ $.validator.addMethod("maxWords", function(value, element, params) {
19
27
  return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length <= params;
20
- }, jQuery.validator.format("Please enter {0} words or less."));
28
+ }, $.validator.format("Please enter {0} words or less."));
21
29
 
22
- jQuery.validator.addMethod("minWords", function(value, element, params) {
30
+ $.validator.addMethod("minWords", function(value, element, params) {
23
31
  return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params;
24
- }, jQuery.validator.format("Please enter at least {0} words."));
32
+ }, $.validator.format("Please enter at least {0} words."));
25
33
 
26
- jQuery.validator.addMethod("rangeWords", function(value, element, params) {
34
+ $.validator.addMethod("rangeWords", function(value, element, params) {
27
35
  var valueStripped = stripHtml(value),
28
36
  regex = /\b\w+\b/g;
29
37
  return this.optional(element) || valueStripped.match(regex).length >= params[0] && valueStripped.match(regex).length <= params[1];
30
- }, jQuery.validator.format("Please enter between {0} and {1} words."));
38
+ }, $.validator.format("Please enter between {0} and {1} words."));
31
39
 
32
40
  }());
33
41
 
34
42
  // Accept a value from a file input based on a required mimetype
35
- jQuery.validator.addMethod("accept", function(value, element, param) {
43
+ $.validator.addMethod("accept", function(value, element, param) {
36
44
  // Split mime on commas in case we have multiple types we can accept
37
45
  var typeParam = typeof param === "string" ? param.replace(/\s/g, "").replace(/,/g, "|") : "image/*",
38
46
  optionalValue = this.optional(element),
@@ -43,7 +51,7 @@ jQuery.validator.addMethod("accept", function(value, element, param) {
43
51
  return optionalValue;
44
52
  }
45
53
 
46
- if (jQuery(element).attr("type") === "file") {
54
+ if ($(element).attr("type") === "file") {
47
55
  // If we are using a wildcard, make it regex friendly
48
56
  typeParam = typeParam.replace(/\*/g, ".*");
49
57
 
@@ -63,9 +71,9 @@ jQuery.validator.addMethod("accept", function(value, element, param) {
63
71
  // Either return true because we've validated each file, or because the
64
72
  // browser does not support element.files and the FileList feature
65
73
  return true;
66
- }, jQuery.validator.format("Please enter a value with a valid mimetype."));
74
+ }, $.validator.format("Please enter a value with a valid mimetype."));
67
75
 
68
- jQuery.validator.addMethod("alphanumeric", function(value, element) {
76
+ $.validator.addMethod("alphanumeric", function(value, element) {
69
77
  return this.optional(element) || /^\w+$/i.test(value);
70
78
  }, "Letters, numbers, and underscores only please");
71
79
 
@@ -75,7 +83,7 @@ jQuery.validator.addMethod("alphanumeric", function(value, element) {
75
83
  * We accept the notation with spaces, as that is common.
76
84
  * acceptable: 123456789 or 12 34 56 789
77
85
  */
78
- jQuery.validator.addMethod("bankaccountNL", function(value, element) {
86
+ $.validator.addMethod("bankaccountNL", function(value, element) {
79
87
  if (this.optional(element)) {
80
88
  return true;
81
89
  }
@@ -95,7 +103,7 @@ jQuery.validator.addMethod("bankaccountNL", function(value, element) {
95
103
  return sum % 11 === 0;
96
104
  }, "Please specify a valid bank account number");
97
105
 
98
- jQuery.validator.addMethod("bankorgiroaccountNL", function(value, element) {
106
+ $.validator.addMethod("bankorgiroaccountNL", function(value, element) {
99
107
  return this.optional(element) ||
100
108
  ($.validator.methods.bankaccountNL.call(this, value, element)) ||
101
109
  ($.validator.methods.giroaccountNL.call(this, value, element));
@@ -114,7 +122,7 @@ jQuery.validator.addMethod("bankorgiroaccountNL", function(value, element) {
114
122
  * b. second character must be a letter ('O' is not allowed) or one of the following digits ('0' for test (therefore not allowed), '1' for passive participant and '2' for active participant)
115
123
  * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)
116
124
  */
117
- jQuery.validator.addMethod("bic", function(value, element) {
125
+ $.validator.addMethod("bic", function(value, element) {
118
126
  return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-2])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value );
119
127
  }, "Please specify a valid BIC code");
120
128
 
@@ -122,7 +130,7 @@ jQuery.validator.addMethod("bic", function(value, element) {
122
130
  * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities
123
131
  * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal
124
132
  */
125
- jQuery.validator.addMethod( "cifES", function( value ) {
133
+ $.validator.addMethod( "cifES", function( value ) {
126
134
  "use strict";
127
135
 
128
136
  var num = [],
@@ -184,7 +192,7 @@ jQuery.validator.addMethod( "cifES", function( value ) {
184
192
  * Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
185
193
  * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
186
194
  */
187
- jQuery.validator.addMethod("creditcardtypes", function(value, element, param) {
195
+ $.validator.addMethod("creditcardtypes", function(value, element, param) {
188
196
  if (/[^0-9\-]+/.test(value)) {
189
197
  return false;
190
198
  }
@@ -278,7 +286,7 @@ jQuery.validator.addMethod("creditcardtypes", function(value, element, param) {
278
286
  * currency: "$,£,¢"
279
287
  * }
280
288
  */
281
- jQuery.validator.addMethod("currency", function(value, element, param) {
289
+ $.validator.addMethod("currency", function(value, element, param) {
282
290
  var isParamString = typeof param === "string",
283
291
  symbol = isParamString ? param : param[0],
284
292
  soft = isParamString ? true : param[1],
@@ -292,36 +300,40 @@ jQuery.validator.addMethod("currency", function(value, element, param) {
292
300
 
293
301
  }, "Please specify a valid currency");
294
302
 
303
+ $.validator.addMethod("dateFA", function(value, element) {
304
+ return this.optional(element) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test(value);
305
+ }, "Please enter a correct date");
306
+
295
307
  /**
296
308
  * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
297
309
  *
298
- * @example jQuery.validator.methods.date("01/01/1900")
310
+ * @example $.validator.methods.date("01/01/1900")
299
311
  * @result true
300
312
  *
301
- * @example jQuery.validator.methods.date("01/13/1990")
313
+ * @example $.validator.methods.date("01/13/1990")
302
314
  * @result false
303
315
  *
304
- * @example jQuery.validator.methods.date("01.01.1900")
316
+ * @example $.validator.methods.date("01.01.1900")
305
317
  * @result false
306
318
  *
307
319
  * @example <input name="pippo" class="{dateITA:true}" />
308
320
  * @desc Declares an optional input element whose value must be a valid date.
309
321
  *
310
- * @name jQuery.validator.methods.dateITA
322
+ * @name $.validator.methods.dateITA
311
323
  * @type Boolean
312
324
  * @cat Plugins/Validate/Methods
313
325
  */
314
- jQuery.validator.addMethod("dateITA", function(value, element) {
326
+ $.validator.addMethod("dateITA", function(value, element) {
315
327
  var check = false,
316
328
  re = /^\d{1,2}\/\d{1,2}\/\d{4}$/,
317
329
  adata, gg, mm, aaaa, xdata;
318
330
  if ( re.test(value)) {
319
331
  adata = value.split("/");
320
- gg = parseInt(adata[0],10);
321
- mm = parseInt(adata[1],10);
322
- aaaa = parseInt(adata[2],10);
332
+ gg = parseInt(adata[0], 10);
333
+ mm = parseInt(adata[1], 10);
334
+ aaaa = parseInt(adata[2], 10);
323
335
  xdata = new Date(aaaa, mm - 1, gg, 12, 0, 0, 0);
324
- if ( ( xdata.getFullYear() === aaaa ) && ( xdata.getMonth() === mm - 1 ) && ( xdata.getDate() === gg ) ){
336
+ if ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth () === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) {
325
337
  check = true;
326
338
  } else {
327
339
  check = false;
@@ -332,20 +344,20 @@ jQuery.validator.addMethod("dateITA", function(value, element) {
332
344
  return this.optional(element) || check;
333
345
  }, "Please enter a correct date");
334
346
 
335
- jQuery.validator.addMethod("dateNL", function(value, element) {
347
+ $.validator.addMethod("dateNL", function(value, element) {
336
348
  return this.optional(element) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(value);
337
349
  }, "Please enter a correct date");
338
350
 
339
351
  // Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept
340
- jQuery.validator.addMethod("extension", function(value, element, param) {
352
+ $.validator.addMethod("extension", function(value, element, param) {
341
353
  param = typeof param === "string" ? param.replace(/,/g, "|") : "png|jpe?g|gif";
342
354
  return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i"));
343
- }, jQuery.validator.format("Please enter a value with a valid extension."));
355
+ }, $.validator.format("Please enter a value with a valid extension."));
344
356
 
345
357
  /**
346
358
  * Dutch giro account numbers (not bank numbers) have max 7 digits
347
359
  */
348
- jQuery.validator.addMethod("giroaccountNL", function(value, element) {
360
+ $.validator.addMethod("giroaccountNL", function(value, element) {
349
361
  return this.optional(element) || /^[0-9]{1,7}$/.test(value);
350
362
  }, "Please specify a valid giro account number");
351
363
 
@@ -353,14 +365,14 @@ jQuery.validator.addMethod("giroaccountNL", function(value, element) {
353
365
  * IBAN is the international bank account number.
354
366
  * It has a country - specific format, that is checked here too
355
367
  */
356
- jQuery.validator.addMethod("iban", function(value, element) {
368
+ $.validator.addMethod("iban", function(value, element) {
357
369
  // some quick simple tests to prevent needless work
358
370
  if (this.optional(element)) {
359
371
  return true;
360
372
  }
361
373
 
362
374
  // remove spaces and to upper case
363
- var iban = value.replace(/ /g,"").toUpperCase(),
375
+ var iban = value.replace(/ /g, "").toUpperCase(),
364
376
  ibancheckdigits = "",
365
377
  leadingZeroes = true,
366
378
  cRest = "",
@@ -372,7 +384,7 @@ jQuery.validator.addMethod("iban", function(value, element) {
372
384
  }
373
385
 
374
386
  // check the country code and find the country specific format
375
- countrycode = iban.substring(0,2);
387
+ countrycode = iban.substring(0, 2);
376
388
  bbancountrypatterns = {
377
389
  "AL": "\\d{8}[\\dA-Z]{16}",
378
390
  "AD": "\\d{8}[\\dA-Z]{12}",
@@ -456,7 +468,7 @@ jQuery.validator.addMethod("iban", function(value, element) {
456
468
  }
457
469
 
458
470
  // now check the checksum, first convert to digits
459
- ibancheck = iban.substring(4,iban.length) + iban.substring(0,4);
471
+ ibancheck = iban.substring(4, iban.length) + iban.substring(0, 4);
460
472
  for (i = 0; i < ibancheck.length; i++) {
461
473
  charAt = ibancheck.charAt(i);
462
474
  if (charAt !== "0") {
@@ -476,27 +488,27 @@ jQuery.validator.addMethod("iban", function(value, element) {
476
488
  return cRest === 1;
477
489
  }, "Please specify a valid IBAN");
478
490
 
479
- jQuery.validator.addMethod("integer", function(value, element) {
491
+ $.validator.addMethod("integer", function(value, element) {
480
492
  return this.optional(element) || /^-?\d+$/.test(value);
481
493
  }, "A positive or negative non-decimal number please");
482
494
 
483
- jQuery.validator.addMethod("ipv4", function(value, element) {
495
+ $.validator.addMethod("ipv4", function(value, element) {
484
496
  return this.optional(element) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(value);
485
497
  }, "Please enter a valid IP v4 address.");
486
498
 
487
- jQuery.validator.addMethod("ipv6", function(value, element) {
499
+ $.validator.addMethod("ipv6", function(value, element) {
488
500
  return this.optional(element) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(value);
489
501
  }, "Please enter a valid IP v6 address.");
490
502
 
491
- jQuery.validator.addMethod("lettersonly", function(value, element) {
503
+ $.validator.addMethod("lettersonly", function(value, element) {
492
504
  return this.optional(element) || /^[a-z]+$/i.test(value);
493
505
  }, "Letters only please");
494
506
 
495
- jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) {
507
+ $.validator.addMethod("letterswithbasicpunc", function(value, element) {
496
508
  return this.optional(element) || /^[a-z\-.,()'"\s]+$/i.test(value);
497
509
  }, "Letters or punctuation only please");
498
510
 
499
- jQuery.validator.addMethod("mobileNL", function(value, element) {
511
+ $.validator.addMethod("mobileNL", function(value, element) {
500
512
  return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(value);
501
513
  }, "Please specify a valid mobile number");
502
514
 
@@ -508,7 +520,7 @@ jQuery.validator.addMethod("mobileNL", function(value, element) {
508
520
  * A number of very detailed GB telephone number RegEx patterns can also be found at:
509
521
  * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
510
522
  */
511
- jQuery.validator.addMethod("mobileUK", function(phone_number, element) {
523
+ $.validator.addMethod("mobileUK", function(phone_number, element) {
512
524
  phone_number = phone_number.replace(/\(|\)|\s+|-/g, "");
513
525
  return this.optional(element) || phone_number.length > 9 &&
514
526
  phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/);
@@ -517,7 +529,7 @@ jQuery.validator.addMethod("mobileUK", function(phone_number, element) {
517
529
  /*
518
530
  * The número de identidad de extranjero ( NIE )is a code used to identify the non-nationals in Spain
519
531
  */
520
- jQuery.validator.addMethod( "nieES", function( value ) {
532
+ $.validator.addMethod( "nieES", function( value ) {
521
533
  "use strict";
522
534
 
523
535
  value = value.toUpperCase();
@@ -552,7 +564,7 @@ jQuery.validator.addMethod( "nieES", function( value ) {
552
564
  /*
553
565
  * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals
554
566
  */
555
- jQuery.validator.addMethod( "nifES", function( value ) {
567
+ $.validator.addMethod( "nifES", function( value ) {
556
568
  "use strict";
557
569
 
558
570
  value = value.toUpperCase();
@@ -575,29 +587,29 @@ jQuery.validator.addMethod( "nifES", function( value ) {
575
587
 
576
588
  }, "Please specify a valid NIF number." );
577
589
 
578
- jQuery.validator.addMethod("nowhitespace", function(value, element) {
590
+ $.validator.addMethod("nowhitespace", function(value, element) {
579
591
  return this.optional(element) || /^\S+$/i.test(value);
580
592
  }, "No white space please");
581
593
 
582
594
  /**
583
595
  * Return true if the field value matches the given format RegExp
584
596
  *
585
- * @example jQuery.validator.methods.pattern("AR1004",element,/^AR\d{4}$/)
597
+ * @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/)
586
598
  * @result true
587
599
  *
588
- * @example jQuery.validator.methods.pattern("BR1004",element,/^AR\d{4}$/)
600
+ * @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/)
589
601
  * @result false
590
602
  *
591
- * @name jQuery.validator.methods.pattern
603
+ * @name $.validator.methods.pattern
592
604
  * @type Boolean
593
605
  * @cat Plugins/Validate/Methods
594
606
  */
595
- jQuery.validator.addMethod("pattern", function(value, element, param) {
607
+ $.validator.addMethod("pattern", function(value, element, param) {
596
608
  if (this.optional(element)) {
597
609
  return true;
598
610
  }
599
611
  if (typeof param === "string") {
600
- param = new RegExp(param);
612
+ param = new RegExp("^(?:" + param + ")$");
601
613
  }
602
614
  return param.test(value);
603
615
  }, "Invalid format.");
@@ -605,7 +617,7 @@ jQuery.validator.addMethod("pattern", function(value, element, param) {
605
617
  /**
606
618
  * Dutch phone numbers have 10 digits (or 11 and start with +31).
607
619
  */
608
- jQuery.validator.addMethod("phoneNL", function(value, element) {
620
+ $.validator.addMethod("phoneNL", function(value, element) {
609
621
  return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(value);
610
622
  }, "Please specify a valid phone number.");
611
623
 
@@ -617,7 +629,7 @@ jQuery.validator.addMethod("phoneNL", function(value, element) {
617
629
  * A number of very detailed GB telephone number RegEx patterns can also be found at:
618
630
  * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
619
631
  */
620
- jQuery.validator.addMethod("phoneUK", function(phone_number, element) {
632
+ $.validator.addMethod("phoneUK", function(phone_number, element) {
621
633
  phone_number = phone_number.replace(/\(|\)|\s+|-/g, "");
622
634
  return this.optional(element) || phone_number.length > 9 &&
623
635
  phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/);
@@ -639,7 +651,7 @@ jQuery.validator.addMethod("phoneUK", function(phone_number, element) {
639
651
  * and not
640
652
  * 212 123 4567
641
653
  */
642
- jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
654
+ $.validator.addMethod("phoneUS", function(phone_number, element) {
643
655
  phone_number = phone_number.replace(/\s+/g, "");
644
656
  return this.optional(element) || phone_number.length > 9 &&
645
657
  phone_number.match(/^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/);
@@ -654,18 +666,52 @@ jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
654
666
  * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
655
667
  */
656
668
  //Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
657
- jQuery.validator.addMethod("phonesUK", function(phone_number, element) {
669
+ $.validator.addMethod("phonesUK", function(phone_number, element) {
658
670
  phone_number = phone_number.replace(/\(|\)|\s+|-/g, "");
659
671
  return this.optional(element) || phone_number.length > 9 &&
660
672
  phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/);
661
673
  }, "Please specify a valid uk phone number");
662
674
 
663
- jQuery.validator.addMethod("postalcodeNL", function(value, element) {
675
+ /**
676
+ * Matches a valid Canadian Postal Code
677
+ *
678
+ * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element )
679
+ * @result true
680
+ *
681
+ * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element )
682
+ * @result false
683
+ *
684
+ * @name jQuery.validator.methods.postalCodeCA
685
+ * @type Boolean
686
+ * @cat Plugins/Validate/Methods
687
+ */
688
+ $.validator.addMethod( "postalCodeCA", function( value, element ) {
689
+ return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[A-Z] \d[A-Z]\d$/.test( value );
690
+ }, "Please specify a valid postal code" );
691
+
692
+ /*
693
+ * Valida CEPs do brasileiros:
694
+ *
695
+ * Formatos aceitos:
696
+ * 99999-999
697
+ * 99.999-999
698
+ * 99999999
699
+ */
700
+ $.validator.addMethod("postalcodeBR", function(cep_value, element) {
701
+ return this.optional(element) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
702
+ }, "Informe um CEP válido.");
703
+
704
+ /* Matches Italian postcode (CAP) */
705
+ $.validator.addMethod("postalcodeIT", function(value, element) {
706
+ return this.optional(element) || /^\d{5}$/.test(value);
707
+ }, "Please specify a valid postal code");
708
+
709
+ $.validator.addMethod("postalcodeNL", function(value, element) {
664
710
  return this.optional(element) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(value);
665
711
  }, "Please specify a valid postal code");
666
712
 
667
713
  // Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)
668
- jQuery.validator.addMethod("postcodeUK", function(value, element) {
714
+ $.validator.addMethod("postcodeUK", function(value, element) {
669
715
  return this.optional(element) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(value);
670
716
  }, "Please specify a valid UK postcode");
671
717
 
@@ -685,7 +731,7 @@ jQuery.validator.addMethod("postcodeUK", function(value, element) {
685
731
  * options[0]: number of fields that must be filled in the group
686
732
  * options[1]: CSS selector that defines the group of conditionally required fields
687
733
  */
688
- jQuery.validator.addMethod("require_from_group", function(value, element, options) {
734
+ $.validator.addMethod("require_from_group", function(value, element, options) {
689
735
  var $fields = $(options[1], element.form),
690
736
  $fieldsFirst = $fields.eq(0),
691
737
  validator = $fieldsFirst.data("valid_req_grp") ? $fieldsFirst.data("valid_req_grp") : $.extend({}, this),
@@ -705,7 +751,7 @@ jQuery.validator.addMethod("require_from_group", function(value, element, option
705
751
  $fields.data("being_validated", false);
706
752
  }
707
753
  return isValid;
708
- }, jQuery.validator.format("Please fill at least {0} of these fields."));
754
+ }, $.validator.format("Please fill at least {0} of these fields."));
709
755
 
710
756
  /*
711
757
  * Lets you say "either at least X inputs that match selector Y must be filled,
@@ -728,7 +774,7 @@ jQuery.validator.addMethod("require_from_group", function(value, element, option
728
774
  * options[1]: CSS selector that defines the group of conditionally required fields
729
775
  *
730
776
  */
731
- jQuery.validator.addMethod("skip_or_fill_minimum", function(value, element, options) {
777
+ $.validator.addMethod("skip_or_fill_minimum", function(value, element, options) {
732
778
  var $fields = $(options[1], element.form),
733
779
  $fieldsFirst = $fields.eq(0),
734
780
  validator = $fieldsFirst.data("valid_skip") ? $fieldsFirst.data("valid_skip") : $.extend({}, this),
@@ -749,25 +795,84 @@ jQuery.validator.addMethod("skip_or_fill_minimum", function(value, element, opti
749
795
  $fields.data("being_validated", false);
750
796
  }
751
797
  return isValid;
752
- }, jQuery.validator.format("Please either skip these fields or fill at least {0} of them."));
798
+ }, $.validator.format("Please either skip these fields or fill at least {0} of them."));
799
+
800
+ /* Validates US States and/or Territories by @jdforsythe
801
+ * Can be case insensitive or require capitalization - default is case insensitive
802
+ * Can include US Territories or not - default does not
803
+ * Can include US Military postal abbreviations (AA, AE, AP) - default does not
804
+ *
805
+ * Note: "States" always includes DC (District of Colombia)
806
+ *
807
+ * Usage examples:
808
+ *
809
+ * This is the default - case insensitive, no territories, no military zones
810
+ * stateInput: {
811
+ * caseSensitive: false,
812
+ * includeTerritories: false,
813
+ * includeMilitary: false
814
+ * }
815
+ *
816
+ * Only allow capital letters, no territories, no military zones
817
+ * stateInput: {
818
+ * caseSensitive: false
819
+ * }
820
+ *
821
+ * Case insensitive, include territories but not military zones
822
+ * stateInput: {
823
+ * includeTerritories: true
824
+ * }
825
+ *
826
+ * Only allow capital letters, include territories and military zones
827
+ * stateInput: {
828
+ * caseSensitive: true,
829
+ * includeTerritories: true,
830
+ * includeMilitary: true
831
+ * }
832
+ *
833
+ *
834
+ *
835
+ */
836
+
837
+ jQuery.validator.addMethod("stateUS", function(value, element, options) {
838
+ var isDefault = typeof options === "undefined",
839
+ caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive,
840
+ includeTerritories = ( isDefault || typeof options.includeTerritories === "undefined" ) ? false : options.includeTerritories,
841
+ includeMilitary = ( isDefault || typeof options.includeMilitary === "undefined" ) ? false : options.includeMilitary,
842
+ regex;
843
+
844
+ if (!includeTerritories && !includeMilitary) {
845
+ regex = "^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
846
+ } else if (includeTerritories && includeMilitary) {
847
+ regex = "^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
848
+ } else if (includeTerritories) {
849
+ regex = "^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
850
+ } else {
851
+ regex = "^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
852
+ }
853
+
854
+ regex = caseSensitive ? new RegExp(regex) : new RegExp(regex, "i");
855
+ return this.optional(element) || regex.test(value);
856
+ },
857
+ "Please specify a valid state");
753
858
 
754
859
  // TODO check if value starts with <, otherwise don't try stripping anything
755
- jQuery.validator.addMethod("strippedminlength", function(value, element, param) {
756
- return jQuery(value).text().length >= param;
757
- }, jQuery.validator.format("Please enter at least {0} characters"));
860
+ $.validator.addMethod("strippedminlength", function(value, element, param) {
861
+ return $(value).text().length >= param;
862
+ }, $.validator.format("Please enter at least {0} characters"));
758
863
 
759
- jQuery.validator.addMethod("time", function(value, element) {
864
+ $.validator.addMethod("time", function(value, element) {
760
865
  return this.optional(element) || /^([01]\d|2[0-3])(:[0-5]\d){1,2}$/.test(value);
761
866
  }, "Please enter a valid time, between 00:00 and 23:59");
762
867
 
763
- jQuery.validator.addMethod("time12h", function(value, element) {
868
+ $.validator.addMethod("time12h", function(value, element) {
764
869
  return this.optional(element) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(value);
765
870
  }, "Please enter a valid time in 12-hour am/pm format");
766
871
 
767
872
  // same as url, but TLD is optional
768
- jQuery.validator.addMethod("url2", function(value, element) {
873
+ $.validator.addMethod("url2", function(value, element) {
769
874
  return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
770
- }, jQuery.validator.messages.url);
875
+ }, $.validator.messages.url);
771
876
 
772
877
  /**
773
878
  * Return true, if the value is a valid vehicle identification number (VIN).
@@ -777,11 +882,11 @@ jQuery.validator.addMethod("url2", function(value, element) {
777
882
  * @example <input type="text" size="20" name="VehicleID" class="{required:true,vinUS:true}" />
778
883
  * @desc Declares a required input element whose value must be a valid vehicle identification number.
779
884
  *
780
- * @name jQuery.validator.methods.vinUS
885
+ * @name $.validator.methods.vinUS
781
886
  * @type Boolean
782
887
  * @cat Plugins/Validate/Methods
783
888
  */
784
- jQuery.validator.addMethod("vinUS", function(v) {
889
+ $.validator.addMethod("vinUS", function(v) {
785
890
  if (v.length !== 17) {
786
891
  return false;
787
892
  }
@@ -792,9 +897,9 @@ jQuery.validator.addMethod("vinUS", function(v) {
792
897
  rs = 0,
793
898
  i, n, d, f, cd, cdv;
794
899
 
795
- for (i = 0; i < 17; i++){
900
+ for (i = 0; i < 17; i++) {
796
901
  f = FL[i];
797
- d = v.slice(i,i + 1);
902
+ d = v.slice(i, i + 1);
798
903
  if (i === 8) {
799
904
  cdv = d;
800
905
  }
@@ -824,10 +929,12 @@ jQuery.validator.addMethod("vinUS", function(v) {
824
929
  return false;
825
930
  }, "The specified vehicle identification number (VIN) is invalid.");
826
931
 
827
- jQuery.validator.addMethod("zipcodeUS", function(value, element) {
828
- return this.optional(element) || /^\d{5}-\d{4}$|^\d{5}$/.test(value);
932
+ $.validator.addMethod("zipcodeUS", function(value, element) {
933
+ return this.optional(element) || /^\d{5}(-\d{4})?$/.test(value);
829
934
  }, "The specified US ZIP Code is invalid");
830
935
 
831
- jQuery.validator.addMethod("ziprange", function(value, element) {
936
+ $.validator.addMethod("ziprange", function(value, element) {
832
937
  return this.optional(element) || /^90[2-5]\d\{2\}-\d{4}$/.test(value);
833
- }, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");
938
+ }, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx");
939
+
940
+ }));