formvalidation-rails 0.6.3 → 0.7.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.
- checksums.yaml +4 -4
- data/README.md +6 -6
- data/lib/formvalidation-rails/version.rb +2 -2
- data/vendor/assets/javascripts/formvalidation.js +521 -501
- data/vendor/assets/javascripts/formvalidation.min.js +6 -6
- data/vendor/assets/javascripts/formvalidation/framework/bootstrap.js +4 -3
- data/vendor/assets/javascripts/formvalidation/framework/bootstrap.min.js +3 -3
- data/vendor/assets/javascripts/formvalidation/framework/foundation.js +3 -3
- data/vendor/assets/javascripts/formvalidation/framework/foundation.min.js +3 -3
- data/vendor/assets/javascripts/formvalidation/framework/pure.js +3 -3
- data/vendor/assets/javascripts/formvalidation/framework/pure.min.js +3 -3
- data/vendor/assets/javascripts/formvalidation/framework/semantic.js +3 -3
- data/vendor/assets/javascripts/formvalidation/framework/semantic.min.js +3 -3
- data/vendor/assets/javascripts/formvalidation/framework/uikit.js +3 -3
- data/vendor/assets/javascripts/formvalidation/framework/uikit.min.js +3 -3
- data/vendor/assets/javascripts/formvalidation/language/ar_MA.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/bg_BG.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/ca_ES.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/cs_CZ.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/da_DK.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/de_DE.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/{gr_EL.js → el_GR.js} +7 -2
- data/vendor/assets/javascripts/formvalidation/language/en_US.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/es_CL.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/es_ES.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/eu_ES.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/fa_IR.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/fi_FI.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/{be_FR.js → fr_BE.js} +7 -2
- data/vendor/assets/javascripts/formvalidation/language/fr_FR.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/he_IL.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/hi_IN.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/hu_HU.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/id_ID.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/it_IT.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/ja_JP.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/{be_NL.js → nl_BE.js} +7 -2
- data/vendor/assets/javascripts/formvalidation/language/nl_NL.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/no_NO.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/pl_PL.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/pt_BR.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/pt_PT.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/ro_RO.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/ru_RU.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/sk_SK.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/sq_AL.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/sr_RS.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/sv_SE.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/th_TH.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/tr_TR.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/ua_UA.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/vi_VN.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/zh_CN.js +6 -1
- data/vendor/assets/javascripts/formvalidation/language/zh_TW.js +6 -1
- data/vendor/assets/stylesheets/formvalidation.css +6 -1
- data/vendor/assets/stylesheets/formvalidation.min.css +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 508aa888c54567ee1fd53cc373fbc8f262d4e010
|
|
4
|
+
data.tar.gz: 7069f66c31732f68cf2654189eedc3c0502b18be
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 64da37953d0636a8648bbb1ed5a2fee7747112c0e88347a908c15393165fc65c13b3b9480c96141301f89d238b37a148d4f1f12e0bf387d4cc49be307507b4a9
|
|
7
|
+
data.tar.gz: 6e476090b60cdb2320d86e1cac3f998f1e74b837702c10bdd07c5e3b110249113565c948c4c91e577831a9d0fb63b959ed4740369da29512cea00b53319bc2c3
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
formvalidation-rails (0.
|
|
1
|
+
formvalidation-rails (0.7.0)
|
|
2
2
|
=================================
|
|
3
3
|
|
|
4
4
|
Provides client side validations for forms with the http://formvalidation.io/ library.
|
|
@@ -6,6 +6,11 @@ Provides client side validations for forms with the http://formvalidation.io/ li
|
|
|
6
6
|
The original formvalidation repo can be found here: https://github.com/formvalidation/formvalidation.
|
|
7
7
|
This is only a gem containing a release version for easier use.
|
|
8
8
|
|
|
9
|
+
### Important
|
|
10
|
+
|
|
11
|
+
For commercial use a commercial license for formvalidation.io needs to be purchased at http://formvalidation.io/.
|
|
12
|
+
This gem only provides a package for easier use with RubyOnRails but does not affect the original license of
|
|
13
|
+
formvalidation.io.
|
|
9
14
|
|
|
10
15
|
### How to Use
|
|
11
16
|
|
|
@@ -37,11 +42,6 @@ And if needed the extension (for html frameworks) and language packs you need:
|
|
|
37
42
|
`*= require formvalidation.min`
|
|
38
43
|
|
|
39
44
|
|
|
40
|
-
### License
|
|
41
|
-
|
|
42
|
-
**Important** for commercial use a commercial license for formvalidation.io needs to be purchased at http://formvalidation.io/
|
|
43
|
-
|
|
44
|
-
|
|
45
45
|
### Credits
|
|
46
46
|
|
|
47
47
|
This gem was build after the example of https://rubygems.org/gems/bootstrap-validator-rails, a earlier version of formvalidation.io under a different name.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* FormValidation (http://formvalidation.io)
|
|
3
3
|
* The best jQuery plugin to validate form fields. Support Bootstrap, Foundation, Pure, SemanticUI, UIKit and custom frameworks
|
|
4
4
|
*
|
|
5
|
-
* @version v0.
|
|
6
|
-
* @author https://twitter.com/
|
|
5
|
+
* @version v0.7.0, built on 2015-08-01 4:57:16 PM
|
|
6
|
+
* @author https://twitter.com/formvalidation
|
|
7
7
|
* @copyright (c) 2013 - 2015 Nguyen Huu Phuoc
|
|
8
8
|
* @license http://formvalidation.io/license/
|
|
9
9
|
*/
|
|
@@ -27,7 +27,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
27
27
|
}(jQuery));
|
|
28
28
|
|
|
29
29
|
(function($) {
|
|
30
|
-
// TODO: Remove backward compatibility
|
|
30
|
+
// TODO: Remove backward compatibility
|
|
31
31
|
/**
|
|
32
32
|
* Constructor
|
|
33
33
|
*
|
|
@@ -53,19 +53,22 @@ if (typeof jQuery === 'undefined') {
|
|
|
53
53
|
this.STATUS_VALID = 'VALID';
|
|
54
54
|
this.STATUS_IGNORED = 'IGNORED';
|
|
55
55
|
|
|
56
|
+
// Default message
|
|
57
|
+
this.DEFAULT_MESSAGE = $.fn.formValidation.DEFAULT_MESSAGE;
|
|
58
|
+
|
|
56
59
|
// Determine the event that is fired when user change the field value
|
|
57
60
|
// Most modern browsers supports input event except IE 7, 8.
|
|
58
61
|
// IE 9 supports input event but the event is still not fired if I press the backspace key.
|
|
59
62
|
// Get IE version
|
|
60
63
|
// https://gist.github.com/padolsey/527683/#comment-7595
|
|
61
|
-
|
|
64
|
+
this._ieVersion = (function() {
|
|
62
65
|
var v = 3, div = document.createElement('div'), a = div.all || [];
|
|
63
66
|
while (div.innerHTML = '<!--[if gt IE '+(++v)+']><br><![endif]-->', a[0]) {}
|
|
64
|
-
return v > 4 ? v :
|
|
67
|
+
return v > 4 ? v : document.documentMode;
|
|
65
68
|
}());
|
|
66
69
|
|
|
67
70
|
var el = document.createElement('div');
|
|
68
|
-
this._changeEvent = (
|
|
71
|
+
this._changeEvent = (this._ieVersion === 9 || !('oninput' in el)) ? 'keyup' : 'input';
|
|
69
72
|
|
|
70
73
|
// The flag to indicate that the form is ready to submit when a remote/callback validator returns
|
|
71
74
|
this._submitIfValid = null;
|
|
@@ -120,6 +123,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
120
123
|
},
|
|
121
124
|
events: {
|
|
122
125
|
formInit: this.$form.attr('data-' + ns + '-events-form-init'),
|
|
126
|
+
formPreValidate: this.$form.attr('data-' + ns + '-events-form-prevalidate'),
|
|
123
127
|
formError: this.$form.attr('data-' + ns + '-events-form-error'),
|
|
124
128
|
formSuccess: this.$form.attr('data-' + ns + '-events-form-success'),
|
|
125
129
|
fieldAdded: this.$form.attr('data-' + ns + '-events-field-added'),
|
|
@@ -143,6 +147,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
143
147
|
live: this.$form.attr('data-' + ns + '-live'),
|
|
144
148
|
locale: this.$form.attr('data-' + ns + '-locale'),
|
|
145
149
|
message: this.$form.attr('data-' + ns + '-message'),
|
|
150
|
+
onPreValidate: this.$form.attr('data-' + ns + '-onprevalidate'),
|
|
146
151
|
onError: this.$form.attr('data-' + ns + '-onerror'),
|
|
147
152
|
onSuccess: this.$form.attr('data-' + ns + '-onsuccess'),
|
|
148
153
|
row: {
|
|
@@ -176,7 +181,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
176
181
|
// Find all fields which have either "name" or "data-{namespace}-field" attribute
|
|
177
182
|
this.$form
|
|
178
183
|
.find('[name], [data-' + ns + '-field]')
|
|
179
|
-
.each(function
|
|
184
|
+
.each(function() {
|
|
180
185
|
var $field = $(this),
|
|
181
186
|
field = $field.attr('name') || $field.attr('data-' + ns + '-field'),
|
|
182
187
|
opts = that._parseOptions($field);
|
|
@@ -239,8 +244,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
239
244
|
// The button might contain HTML tag
|
|
240
245
|
$button = $target.is('[type="submit"]') ? $target.eq(0) : $target.parent('[type="submit"]').eq(0);
|
|
241
246
|
|
|
242
|
-
// Don't perform validation when clicking on the submit button/input
|
|
243
|
-
//
|
|
247
|
+
// Don't perform validation when clicking on the submit button/input which
|
|
248
|
+
// aren't defined by the 'button.selector' option
|
|
244
249
|
if (that.options.button.selector && !$button.is(that.options.button.selector) && !$button.is(that.$hiddenButton)) {
|
|
245
250
|
that.$form.off('submit.' + that._namespace).submit();
|
|
246
251
|
}
|
|
@@ -265,6 +270,11 @@ if (typeof jQuery === 'undefined') {
|
|
|
265
270
|
});
|
|
266
271
|
|
|
267
272
|
// Prepare the events
|
|
273
|
+
if (this.options.onPreValidate) {
|
|
274
|
+
this.$form.on(this.options.events.formPreValidate, function(e) {
|
|
275
|
+
FormValidation.Helper.call(that.options.onPreValidate, [e]);
|
|
276
|
+
});
|
|
277
|
+
}
|
|
268
278
|
if (this.options.onSuccess) {
|
|
269
279
|
this.$form.on(this.options.events.formSuccess, function(e) {
|
|
270
280
|
FormValidation.Helper.call(that.options.onSuccess, [e]);
|
|
@@ -307,9 +317,12 @@ if (typeof jQuery === 'undefined') {
|
|
|
307
317
|
return;
|
|
308
318
|
}
|
|
309
319
|
|
|
310
|
-
var
|
|
311
|
-
|
|
312
|
-
|
|
320
|
+
var validators = this.options.fields[field].validators,
|
|
321
|
+
validatorName,
|
|
322
|
+
alias;
|
|
323
|
+
for (validatorName in validators) {
|
|
324
|
+
alias = validators[validatorName].alias || validatorName;
|
|
325
|
+
if (!FormValidation.Validator[alias]) {
|
|
313
326
|
delete this.options.fields[field].validators[validatorName];
|
|
314
327
|
}
|
|
315
328
|
}
|
|
@@ -352,7 +365,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
352
365
|
|
|
353
366
|
// Create help block elements for showing the error messages
|
|
354
367
|
$field.data(ns + '.messages', $message);
|
|
355
|
-
for (validatorName in
|
|
368
|
+
for (validatorName in validators) {
|
|
356
369
|
$field.data(ns + '.result.' + validatorName, this.STATUS_NOT_VALIDATED);
|
|
357
370
|
|
|
358
371
|
if (!updateAll || i === total - 1) {
|
|
@@ -367,8 +380,9 @@ if (typeof jQuery === 'undefined') {
|
|
|
367
380
|
}
|
|
368
381
|
|
|
369
382
|
// Init the validator
|
|
370
|
-
|
|
371
|
-
|
|
383
|
+
alias = validators[validatorName].alias || validatorName;
|
|
384
|
+
if ('function' === typeof FormValidation.Validator[alias].init) {
|
|
385
|
+
FormValidation.Validator[alias].init(this, $field, this.options.fields[field].validators[validatorName], validatorName);
|
|
372
386
|
}
|
|
373
387
|
}
|
|
374
388
|
|
|
@@ -403,12 +417,12 @@ if (typeof jQuery === 'undefined') {
|
|
|
403
417
|
// Show tooltip/popover message when field gets focus
|
|
404
418
|
.off('focus.container.' + ns)
|
|
405
419
|
.on('focus.container.' + ns, function() {
|
|
406
|
-
that._showTooltip($
|
|
420
|
+
that._showTooltip($(this), container);
|
|
407
421
|
})
|
|
408
422
|
// and hide them when losing focus
|
|
409
423
|
.off('blur.container.' + ns)
|
|
410
424
|
.on('blur.container.' + ns, function() {
|
|
411
|
-
that._hideTooltip($
|
|
425
|
+
that._hideTooltip($(this), container);
|
|
412
426
|
});
|
|
413
427
|
}
|
|
414
428
|
|
|
@@ -446,6 +460,12 @@ if (typeof jQuery === 'undefined') {
|
|
|
446
460
|
FormValidation.Helper.call(onError, [e, data]);
|
|
447
461
|
}
|
|
448
462
|
})
|
|
463
|
+
.on(this.options.events.validatorIgnored, function(e, data) {
|
|
464
|
+
var onIgnored = that.getOptions(data.field, data.validator, 'onIgnored');
|
|
465
|
+
if (onIgnored) {
|
|
466
|
+
FormValidation.Helper.call(onIgnored, [e, data]);
|
|
467
|
+
}
|
|
468
|
+
})
|
|
449
469
|
.on(this.options.events.validatorSuccess, function(e, data) {
|
|
450
470
|
var onSuccess = that.getOptions(data.field, data.validator, 'onSuccess');
|
|
451
471
|
if (onSuccess) {
|
|
@@ -534,9 +554,13 @@ if (typeof jQuery === 'undefined') {
|
|
|
534
554
|
return trigger;
|
|
535
555
|
}
|
|
536
556
|
|
|
557
|
+
// IE10/11 auto fires input event of elements using the placeholder attribute
|
|
558
|
+
// https://connect.microsoft.com/IE/feedback/details/856700/
|
|
537
559
|
var type = $field.attr('type'),
|
|
538
560
|
name = $field.attr('data-' + ns + '-field'),
|
|
539
|
-
event = ('radio' === type || 'checkbox' === type || 'file' === type || 'SELECT' === $field.get(0).tagName)
|
|
561
|
+
event = ('radio' === type || 'checkbox' === type || 'file' === type || 'SELECT' === $field.get(0).tagName)
|
|
562
|
+
? 'change'
|
|
563
|
+
: (this._ieVersion >= 10 && $field.attr('placeholder') ? 'keyup' : this._changeEvent);
|
|
540
564
|
trigger = ((this.options.fields[name] ? this.options.fields[name].trigger : null) || this.options.trigger || event).split(' ');
|
|
541
565
|
|
|
542
566
|
// Since the trigger data is used many times, I need to cache it to use later
|
|
@@ -553,21 +577,26 @@ if (typeof jQuery === 'undefined') {
|
|
|
553
577
|
* @returns {String}
|
|
554
578
|
*/
|
|
555
579
|
_getMessage: function(field, validatorName) {
|
|
556
|
-
if (!this.options.fields[field] || !
|
|
557
|
-
|
|
558
|
-
|
|
580
|
+
if (!this.options.fields[field] || !this.options.fields[field].validators) {
|
|
581
|
+
return '';
|
|
582
|
+
}
|
|
583
|
+
var validators = this.options.fields[field].validators,
|
|
584
|
+
alias = (validators[validatorName] && validators[validatorName].alias) ? validators[validatorName].alias : validatorName;
|
|
585
|
+
if (!FormValidation.Validator[alias]) {
|
|
559
586
|
return '';
|
|
560
587
|
}
|
|
561
588
|
|
|
562
589
|
switch (true) {
|
|
563
|
-
case !!
|
|
564
|
-
return
|
|
590
|
+
case !!validators[validatorName].message:
|
|
591
|
+
return validators[validatorName].message;
|
|
565
592
|
case !!this.options.fields[field].message:
|
|
566
593
|
return this.options.fields[field].message;
|
|
567
|
-
case
|
|
568
|
-
return FormValidation.I18n[this.options.locale][validatorName]['default'];
|
|
569
|
-
default:
|
|
594
|
+
case !!this.options.message:
|
|
570
595
|
return this.options.message;
|
|
596
|
+
case (!!FormValidation.I18n[this.options.locale] && !!FormValidation.I18n[this.options.locale][alias] && !!FormValidation.I18n[this.options.locale][alias]['default']):
|
|
597
|
+
return FormValidation.I18n[this.options.locale][alias]['default'];
|
|
598
|
+
default:
|
|
599
|
+
return this.DEFAULT_MESSAGE;
|
|
571
600
|
}
|
|
572
601
|
},
|
|
573
602
|
|
|
@@ -649,9 +678,11 @@ if (typeof jQuery === 'undefined') {
|
|
|
649
678
|
* @returns {Object}
|
|
650
679
|
*/
|
|
651
680
|
_parseOptions: function($field) {
|
|
652
|
-
var ns
|
|
653
|
-
field
|
|
654
|
-
validators
|
|
681
|
+
var ns = this._namespace,
|
|
682
|
+
field = $field.attr('name') || $field.attr('data-' + ns + '-field'),
|
|
683
|
+
validators = {},
|
|
684
|
+
aliasAttr = new RegExp('^data-' + ns + '-([a-z]+)-alias$'),
|
|
685
|
+
validatorSet = $.extend({}, FormValidation.Validator),
|
|
655
686
|
validator,
|
|
656
687
|
v, // Validator name
|
|
657
688
|
attrName,
|
|
@@ -662,8 +693,19 @@ if (typeof jQuery === 'undefined') {
|
|
|
662
693
|
html5AttrName,
|
|
663
694
|
html5AttrMap;
|
|
664
695
|
|
|
665
|
-
|
|
666
|
-
|
|
696
|
+
// Determine whether the alias validator is used by checking the data-fv-validator-alias attribute
|
|
697
|
+
$.each($field.get(0).attributes, function(i, attribute) {
|
|
698
|
+
if (attribute.value && aliasAttr.test(attribute.name)) {
|
|
699
|
+
v = attribute.name.split('-')[2];
|
|
700
|
+
if (validatorSet[attribute.value]) {
|
|
701
|
+
validatorSet[v] = validatorSet[attribute.value];
|
|
702
|
+
validatorSet[v].alias = attribute.value;
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
});
|
|
706
|
+
|
|
707
|
+
for (v in validatorSet) {
|
|
708
|
+
validator = validatorSet[v];
|
|
667
709
|
attrName = 'data-' + ns + '-' + v.toLowerCase(),
|
|
668
710
|
enabled = $field.attr(attrName) + '';
|
|
669
711
|
html5AttrMap = ('function' === typeof validator.enableByHtml5) ? validator.enableByHtml5($field) : null;
|
|
@@ -679,11 +721,14 @@ if (typeof jQuery === 'undefined') {
|
|
|
679
721
|
transformer: 'transformer'
|
|
680
722
|
}, validator.html5Attributes);
|
|
681
723
|
validators[v] = $.extend({}, html5AttrMap === true ? {} : html5AttrMap, validators[v]);
|
|
724
|
+
if (validator.alias) {
|
|
725
|
+
validators[v].alias = validator.alias;
|
|
726
|
+
}
|
|
682
727
|
|
|
683
728
|
for (html5AttrName in validator.html5Attributes) {
|
|
684
|
-
optionName
|
|
685
|
-
optionAttrName = 'data-' + ns + '-' + v.toLowerCase() + '-' + html5AttrName
|
|
686
|
-
optionValue
|
|
729
|
+
optionName = validator.html5Attributes[html5AttrName];
|
|
730
|
+
optionAttrName = 'data-' + ns + '-' + v.toLowerCase() + '-' + html5AttrName;
|
|
731
|
+
optionValue = $field.attr(optionAttrName);
|
|
687
732
|
if (optionValue) {
|
|
688
733
|
if ('true' === optionValue || optionAttrName === optionValue.toLowerCase()) {
|
|
689
734
|
optionValue = true;
|
|
@@ -699,6 +744,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
699
744
|
var opts = {
|
|
700
745
|
autoFocus: $field.attr('data-' + ns + '-autofocus'),
|
|
701
746
|
err: $field.attr('data-' + ns + '-err-container') || $field.attr('data-' + ns + '-container'), // Support backward
|
|
747
|
+
enabled: $field.attr('data-' + ns + '-enabled'),
|
|
702
748
|
excluded: $field.attr('data-' + ns + '-excluded'),
|
|
703
749
|
icon: $field.attr('data-' + ns + '-icon') || $field.attr('data-' + ns + '-feedbackicons') || (this.options.fields && this.options.fields[field] ? this.options.fields[field].feedbackIcons : null), // Support backward
|
|
704
750
|
message: $field.attr('data-' + ns + '-message'),
|
|
@@ -717,7 +763,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
717
763
|
emptyValidators = $.isEmptyObject(validators); // Check if the field validators are set using HTML attributes
|
|
718
764
|
|
|
719
765
|
if (!emptyValidators || (!emptyOptions && this.options.fields && this.options.fields[field])) {
|
|
720
|
-
opts.validators = validators;
|
|
766
|
+
//opts.validators = validators;
|
|
721
767
|
return opts;
|
|
722
768
|
} else {
|
|
723
769
|
return null;
|
|
@@ -1161,6 +1207,12 @@ if (typeof jQuery === 'undefined') {
|
|
|
1161
1207
|
$errors = $f.data(ns + '.messages')
|
|
1162
1208
|
.find('.' + this.options.err.clazz.split(' ').join('.') + '[data-' + ns + '-validator][data-' + ns + '-for="' + field + '"]');
|
|
1163
1209
|
|
|
1210
|
+
if (this.options.fields && this.options.fields[field]
|
|
1211
|
+
&& (this.options.fields[field].enabled === 'false' || this.options.fields[field].enabled === false))
|
|
1212
|
+
{
|
|
1213
|
+
continue;
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1164
1216
|
if ($errors.filter('[data-' + ns + '-result="' + this.STATUS_INVALID + '"]').length > 0) {
|
|
1165
1217
|
return false;
|
|
1166
1218
|
}
|
|
@@ -1199,7 +1251,9 @@ if (typeof jQuery === 'undefined') {
|
|
|
1199
1251
|
default:
|
|
1200
1252
|
break;
|
|
1201
1253
|
}
|
|
1202
|
-
if (fields.length === 0 || !this.options.fields[field]
|
|
1254
|
+
if (fields.length === 0 || !this.options.fields[field]
|
|
1255
|
+
|| this.options.fields[field].enabled === 'false' || this.options.fields[field].enabled === false)
|
|
1256
|
+
{
|
|
1203
1257
|
return true;
|
|
1204
1258
|
}
|
|
1205
1259
|
|
|
@@ -1411,16 +1465,18 @@ if (typeof jQuery === 'undefined') {
|
|
|
1411
1465
|
}
|
|
1412
1466
|
break;
|
|
1413
1467
|
|
|
1414
|
-
case this.STATUS_VALID:
|
|
1415
1468
|
case this.STATUS_IGNORED: // Treat ignored fields like they are valid with some specialties
|
|
1469
|
+
case this.STATUS_VALID:
|
|
1416
1470
|
isValidating = ($allErrors.filter('[data-' + ns + '-result="' + this.STATUS_VALIDATING +'"]').length > 0);
|
|
1417
1471
|
isNotValidated = ($allErrors.filter('[data-' + ns + '-result="' + this.STATUS_NOT_VALIDATED +'"]').length > 0);
|
|
1418
1472
|
|
|
1473
|
+
var numIgnored = $allErrors.filter('[data-' + ns + '-result="' + this.STATUS_IGNORED +'"]').length;
|
|
1474
|
+
|
|
1419
1475
|
// If the field is valid (passes all validators)
|
|
1420
1476
|
isValidField = (isValidating || isNotValidated) // There are some validators that have not done
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1477
|
+
? null
|
|
1478
|
+
// All validators are completed
|
|
1479
|
+
: ($allErrors.filter('[data-' + ns + '-result="' + this.STATUS_VALID +'"]').length + numIgnored === $allErrors.length);
|
|
1424
1480
|
|
|
1425
1481
|
$field.removeClass(this.options.control.valid).removeClass(this.options.control.invalid);
|
|
1426
1482
|
|
|
@@ -1438,9 +1494,10 @@ if (typeof jQuery === 'undefined') {
|
|
|
1438
1494
|
|
|
1439
1495
|
if ($icon) {
|
|
1440
1496
|
$icon.removeClass(this.options.icon.invalid).removeClass(this.options.icon.validating).removeClass(this.options.icon.valid);
|
|
1441
|
-
if (status === this.STATUS_VALID) {
|
|
1442
|
-
$icon.addClass(
|
|
1443
|
-
|
|
1497
|
+
if (status === this.STATUS_VALID || numIgnored !== $allErrors.length) {
|
|
1498
|
+
$icon.addClass(isValidating
|
|
1499
|
+
? this.options.icon.validating
|
|
1500
|
+
: (isValidField === null ? '' : (isValidField ? this.options.icon.valid : this.options.icon.invalid)))
|
|
1444
1501
|
.show();
|
|
1445
1502
|
}
|
|
1446
1503
|
}
|
|
@@ -1448,8 +1505,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
1448
1505
|
var isValidContainer = this.isValidContainer($parent);
|
|
1449
1506
|
if (isValidContainer !== null) {
|
|
1450
1507
|
$parent.removeClass(this.options.row.valid).removeClass(this.options.row.invalid);
|
|
1451
|
-
|
|
1452
|
-
if (status === this.STATUS_VALID || $allErrors.length > 1) {
|
|
1508
|
+
if (status === this.STATUS_VALID || numIgnored !== $allErrors.length) {
|
|
1453
1509
|
$parent.addClass(isValidContainer ? this.options.row.valid : this.options.row.invalid);
|
|
1454
1510
|
}
|
|
1455
1511
|
}
|
|
@@ -1501,8 +1557,9 @@ if (typeof jQuery === 'undefined') {
|
|
|
1501
1557
|
this._submit();
|
|
1502
1558
|
return this;
|
|
1503
1559
|
}
|
|
1504
|
-
this.
|
|
1560
|
+
this.$form.trigger($.Event(this.options.events.formPreValidate));
|
|
1505
1561
|
|
|
1562
|
+
this.disableSubmitButtons(true);
|
|
1506
1563
|
this._submitIfValid = false;
|
|
1507
1564
|
for (var field in this.options.fields) {
|
|
1508
1565
|
this.validateField(field);
|
|
@@ -1535,7 +1592,9 @@ if (typeof jQuery === 'undefined') {
|
|
|
1535
1592
|
break;
|
|
1536
1593
|
}
|
|
1537
1594
|
|
|
1538
|
-
if (fields.length === 0 || !this.options.fields[field]
|
|
1595
|
+
if (fields.length === 0 || !this.options.fields[field]
|
|
1596
|
+
|| this.options.fields[field].enabled === 'false' || this.options.fields[field].enabled === false)
|
|
1597
|
+
{
|
|
1539
1598
|
return this;
|
|
1540
1599
|
}
|
|
1541
1600
|
|
|
@@ -1546,6 +1605,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
1546
1605
|
validators = this.options.fields[field].validators,
|
|
1547
1606
|
verbose = this.isOptionEnabled(field, 'verbose'),
|
|
1548
1607
|
validatorName,
|
|
1608
|
+
alias,
|
|
1549
1609
|
validateResult;
|
|
1550
1610
|
|
|
1551
1611
|
for (var i = 0; i < total; i++) {
|
|
@@ -1569,12 +1629,18 @@ if (typeof jQuery === 'undefined') {
|
|
|
1569
1629
|
this._onFieldValidated($field, validatorName);
|
|
1570
1630
|
continue;
|
|
1571
1631
|
} else if (validators[validatorName].enabled === false) {
|
|
1572
|
-
|
|
1632
|
+
// Changed in v0.6.2:
|
|
1633
|
+
// When the field validator is disabled, it should be treated as STATUS_IGNORED instead of STATUS_VALID
|
|
1634
|
+
// By doing that, the field with only disabled and ignored validators will not have success/error class
|
|
1635
|
+
this.updateStatus(updateAll ? field : $field, this.STATUS_IGNORED, validatorName);
|
|
1573
1636
|
continue;
|
|
1574
1637
|
}
|
|
1575
1638
|
|
|
1576
1639
|
$field.data(ns + '.result.' + validatorName, this.STATUS_VALIDATING);
|
|
1577
|
-
|
|
1640
|
+
|
|
1641
|
+
// Check whether or not the validator is just an alias of another
|
|
1642
|
+
alias = validators[validatorName].alias || validatorName;
|
|
1643
|
+
validateResult = FormValidation.Validator[alias].validate(this, $field, validators[validatorName], validatorName);
|
|
1578
1644
|
|
|
1579
1645
|
// validateResult can be a $.Deferred object ...
|
|
1580
1646
|
if ('object' === typeof validateResult && validateResult.resolve) {
|
|
@@ -1621,9 +1687,9 @@ if (typeof jQuery === 'undefined') {
|
|
|
1621
1687
|
break;
|
|
1622
1688
|
}
|
|
1623
1689
|
}
|
|
1624
|
-
// ... or null
|
|
1625
|
-
// to indicate that the field should be ignored for current
|
|
1626
|
-
else if (null === validateResult
|
|
1690
|
+
// ... or null
|
|
1691
|
+
// to indicate that the field should be ignored for current validator
|
|
1692
|
+
else if (null === validateResult) {
|
|
1627
1693
|
$field.data(ns + '.response.' + validatorName, validateResult);
|
|
1628
1694
|
this.updateStatus(updateAll ? field : $field, this.STATUS_IGNORED, validatorName);
|
|
1629
1695
|
}
|
|
@@ -1697,7 +1763,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
1697
1763
|
* It will remove all error messages, feedback icons and turn off the events
|
|
1698
1764
|
*/
|
|
1699
1765
|
destroy: function() {
|
|
1700
|
-
var ns = this._namespace, i, field, fields, $field, validator, $icon, row;
|
|
1766
|
+
var ns = this._namespace, i, field, fields, $field, validator, $icon, row, alias;
|
|
1701
1767
|
|
|
1702
1768
|
// Destroy the validators first
|
|
1703
1769
|
for (field in this.options.fields) {
|
|
@@ -1713,8 +1779,9 @@ if (typeof jQuery === 'undefined') {
|
|
|
1713
1779
|
.removeData(ns + '.dfs.' + validator);
|
|
1714
1780
|
|
|
1715
1781
|
// Destroy the validator
|
|
1716
|
-
|
|
1717
|
-
|
|
1782
|
+
alias = this.options.fields[field].validators[validator].alias || validator;
|
|
1783
|
+
if ('function' === typeof FormValidation.Validator[alias].destroy) {
|
|
1784
|
+
FormValidation.Validator[alias].destroy(this, $field, this.options.fields[field].validators[validator], validator);
|
|
1718
1785
|
}
|
|
1719
1786
|
}
|
|
1720
1787
|
}
|
|
@@ -2173,8 +2240,10 @@ if (typeof jQuery === 'undefined') {
|
|
|
2173
2240
|
|
|
2174
2241
|
$.fn.formValidation.Constructor = FormValidation.Base;
|
|
2175
2242
|
|
|
2176
|
-
//
|
|
2177
|
-
|
|
2243
|
+
// Default message
|
|
2244
|
+
$.fn.formValidation.DEFAULT_MESSAGE = 'This value is not valid';
|
|
2245
|
+
|
|
2246
|
+
// The default options sorted in alphabetical order
|
|
2178
2247
|
$.fn.formValidation.DEFAULT_OPTIONS = {
|
|
2179
2248
|
// The first invalid field will be focused automatically
|
|
2180
2249
|
autoFocus: true,
|
|
@@ -2191,6 +2260,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
2191
2260
|
events: {
|
|
2192
2261
|
// Support backward
|
|
2193
2262
|
formInit: 'init.form.fv',
|
|
2263
|
+
formPreValidate: 'prevalidate.form.fv',
|
|
2194
2264
|
formError: 'err.form.fv',
|
|
2195
2265
|
formSuccess: 'success.form.fv',
|
|
2196
2266
|
fieldAdded: 'added.field.fv',
|
|
@@ -2244,7 +2314,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
2244
2314
|
locale: 'en_US',
|
|
2245
2315
|
|
|
2246
2316
|
// Default invalid message
|
|
2247
|
-
message:
|
|
2317
|
+
message: null,
|
|
2248
2318
|
|
|
2249
2319
|
// The field will not be live validated if its length is less than this number of characters
|
|
2250
2320
|
threshold: null,
|
|
@@ -2264,7 +2334,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
2264
2334
|
button: {
|
|
2265
2335
|
// The submit buttons selector
|
|
2266
2336
|
// These buttons will be disabled to prevent the valid form from multiple submissions
|
|
2267
|
-
|
|
2337
|
+
// Don't perform validation when clicking on the submit button/input which have formnovalidate attribute
|
|
2338
|
+
selector: '[type="submit"]:not([formnovalidate])',
|
|
2268
2339
|
|
|
2269
2340
|
// The disabled class
|
|
2270
2341
|
disabled: ''
|
|
@@ -2489,8 +2560,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
2489
2560
|
* - message: The invalid message
|
|
2490
2561
|
* @returns {Boolean}
|
|
2491
2562
|
*/
|
|
2492
|
-
validate: function(validator, $field, options) {
|
|
2493
|
-
var value = validator.getFieldValue($field,
|
|
2563
|
+
validate: function(validator, $field, options, validatorName) {
|
|
2564
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
2494
2565
|
if (value === '') {
|
|
2495
2566
|
return true;
|
|
2496
2567
|
}
|
|
@@ -2547,16 +2618,13 @@ if (typeof jQuery === 'undefined') {
|
|
|
2547
2618
|
* - message: The invalid message
|
|
2548
2619
|
* @returns {Boolean|Object}
|
|
2549
2620
|
*/
|
|
2550
|
-
validate: function(validator, $field, options) {
|
|
2551
|
-
var value = validator.getFieldValue($field,
|
|
2621
|
+
validate: function(validator, $field, options, validatorName) {
|
|
2622
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
2552
2623
|
if (value === '') {
|
|
2553
2624
|
return true;
|
|
2554
2625
|
}
|
|
2555
2626
|
|
|
2556
2627
|
value = this._format(value);
|
|
2557
|
-
if (!$.isNumeric(value)) {
|
|
2558
|
-
return false;
|
|
2559
|
-
}
|
|
2560
2628
|
|
|
2561
2629
|
var locale = validator.getLocale(),
|
|
2562
2630
|
min = $.isNumeric(options.min) ? options.min : validator.getDynamicOption($field, options.min),
|
|
@@ -2564,14 +2632,13 @@ if (typeof jQuery === 'undefined') {
|
|
|
2564
2632
|
minValue = this._format(min),
|
|
2565
2633
|
maxValue = this._format(max);
|
|
2566
2634
|
|
|
2567
|
-
value = parseFloat(value);
|
|
2568
2635
|
return (options.inclusive === true || options.inclusive === undefined)
|
|
2569
2636
|
? {
|
|
2570
|
-
valid: value >= minValue && value <= maxValue,
|
|
2637
|
+
valid: $.isNumeric(value) && parseFloat(value) >= minValue && parseFloat(value) <= maxValue,
|
|
2571
2638
|
message: FormValidation.Helper.format(options.message || FormValidation.I18n[locale].between['default'], [min, max])
|
|
2572
2639
|
}
|
|
2573
2640
|
: {
|
|
2574
|
-
valid: value > minValue
|
|
2641
|
+
valid: $.isNumeric(value) && parseFloat(value) > minValue && parseFloat(value) < maxValue,
|
|
2575
2642
|
message: FormValidation.Helper.format(options.message || FormValidation.I18n[locale].between.notInclusive, [min, max])
|
|
2576
2643
|
};
|
|
2577
2644
|
},
|
|
@@ -2603,8 +2670,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
2603
2670
|
* - message: The invalid message
|
|
2604
2671
|
* @returns {Object}
|
|
2605
2672
|
*/
|
|
2606
|
-
validate: function(validator, $field, options) {
|
|
2607
|
-
var value = validator.getFieldValue($field,
|
|
2673
|
+
validate: function(validator, $field, options, validatorName) {
|
|
2674
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
2608
2675
|
if (value === '') {
|
|
2609
2676
|
return true;
|
|
2610
2677
|
}
|
|
@@ -2625,18 +2692,16 @@ if (typeof jQuery === 'undefined') {
|
|
|
2625
2692
|
* validation and an associated message.
|
|
2626
2693
|
* (4) ajax 400 call handler does the following:
|
|
2627
2694
|
*
|
|
2628
|
-
*
|
|
2629
|
-
*
|
|
2695
|
+
* fv.updateMessage(field, 'blank', errorMessage);
|
|
2696
|
+
* fv.updateStatus(field, 'INVALID', 'blank');
|
|
2630
2697
|
*
|
|
2631
|
-
* @see https://github.com/formvalidation/formvalidation/issues/542
|
|
2632
|
-
* @see https://github.com/formvalidation/formvalidation/pull/666
|
|
2633
2698
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
2634
2699
|
* @param {jQuery} $field Field element
|
|
2635
2700
|
* @param {Object} options Can consist of the following keys:
|
|
2636
2701
|
* - message: The invalid message
|
|
2637
2702
|
* @returns {Boolean}
|
|
2638
2703
|
*/
|
|
2639
|
-
validate: function(validator, $field, options) {
|
|
2704
|
+
validate: function(validator, $field, options, validatorName) {
|
|
2640
2705
|
return true;
|
|
2641
2706
|
}
|
|
2642
2707
|
};
|
|
@@ -2662,17 +2727,17 @@ if (typeof jQuery === 'undefined') {
|
|
|
2662
2727
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
2663
2728
|
* @param {jQuery} $field Field element
|
|
2664
2729
|
* @param {Object} options Can consist of the following keys:
|
|
2665
|
-
* - callback: The callback method that passes
|
|
2730
|
+
* - callback: The callback method that passes parameters:
|
|
2666
2731
|
* callback: function(fieldValue, validator, $field) {
|
|
2667
2732
|
* // fieldValue is the value of field
|
|
2668
|
-
* // validator is instance of
|
|
2733
|
+
* // validator is instance of FormValidation.Base
|
|
2669
2734
|
* // $field is the field element
|
|
2670
2735
|
* }
|
|
2671
2736
|
* - message: The invalid message
|
|
2672
2737
|
* @returns {Deferred}
|
|
2673
2738
|
*/
|
|
2674
|
-
validate: function(validator, $field, options) {
|
|
2675
|
-
var value = validator.getFieldValue($field,
|
|
2739
|
+
validate: function(validator, $field, options, validatorName) {
|
|
2740
|
+
var value = validator.getFieldValue($field, validatorName),
|
|
2676
2741
|
dfd = new $.Deferred(),
|
|
2677
2742
|
result = { valid: true };
|
|
2678
2743
|
|
|
@@ -2681,7 +2746,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
2681
2746
|
result = ('boolean' === typeof response || null === response) ? { valid: response } : response;
|
|
2682
2747
|
}
|
|
2683
2748
|
|
|
2684
|
-
dfd.resolve($field,
|
|
2749
|
+
dfd.resolve($field, validatorName, result);
|
|
2685
2750
|
return dfd;
|
|
2686
2751
|
}
|
|
2687
2752
|
};
|
|
@@ -2724,7 +2789,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
2724
2789
|
* - message: The invalid message
|
|
2725
2790
|
* @returns {Object}
|
|
2726
2791
|
*/
|
|
2727
|
-
validate: function(validator, $field, options) {
|
|
2792
|
+
validate: function(validator, $field, options, validatorName) {
|
|
2728
2793
|
var locale = validator.getLocale(),
|
|
2729
2794
|
ns = validator.getNamespace(),
|
|
2730
2795
|
numChoices = $field.is('select')
|
|
@@ -2846,8 +2911,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
2846
2911
|
* - type: The array of valid color types
|
|
2847
2912
|
* @returns {Boolean}
|
|
2848
2913
|
*/
|
|
2849
|
-
validate: function(validator, $field, options) {
|
|
2850
|
-
var value = validator.getFieldValue($field,
|
|
2914
|
+
validate: function(validator, $field, options, validatorName) {
|
|
2915
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
2851
2916
|
if (value === '') {
|
|
2852
2917
|
return true;
|
|
2853
2918
|
}
|
|
@@ -2928,8 +2993,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
2928
2993
|
* - message: The invalid message
|
|
2929
2994
|
* @returns {Boolean|Object}
|
|
2930
2995
|
*/
|
|
2931
|
-
validate: function(validator, $field, options) {
|
|
2932
|
-
var value = validator.getFieldValue($field,
|
|
2996
|
+
validate: function(validator, $field, options, validatorName) {
|
|
2997
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
2933
2998
|
if (value === '') {
|
|
2934
2999
|
return true;
|
|
2935
3000
|
}
|
|
@@ -3030,9 +3095,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
3030
3095
|
FormValidation.Validator.cusip = {
|
|
3031
3096
|
/**
|
|
3032
3097
|
* Validate a CUSIP number
|
|
3033
|
-
* Examples:
|
|
3034
|
-
* - Valid: 037833100, 931142103, 14149YAR8, 126650BG6
|
|
3035
|
-
* - Invalid: 31430F200, 022615AC2
|
|
3036
3098
|
*
|
|
3037
3099
|
* @see http://en.wikipedia.org/wiki/CUSIP
|
|
3038
3100
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
@@ -3041,8 +3103,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
3041
3103
|
* - message: The invalid message
|
|
3042
3104
|
* @returns {Boolean}
|
|
3043
3105
|
*/
|
|
3044
|
-
validate: function(validator, $field, options) {
|
|
3045
|
-
var value = validator.getFieldValue($field,
|
|
3106
|
+
validate: function(validator, $field, options, validatorName) {
|
|
3107
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
3046
3108
|
if (value === '') {
|
|
3047
3109
|
return true;
|
|
3048
3110
|
}
|
|
@@ -3100,11 +3162,11 @@ if (typeof jQuery === 'undefined') {
|
|
|
3100
3162
|
* @param {Object} options Consists of the following key:
|
|
3101
3163
|
* - creditCardField: The credit card number field
|
|
3102
3164
|
*/
|
|
3103
|
-
init: function(validator, $field, options) {
|
|
3165
|
+
init: function(validator, $field, options, validatorName) {
|
|
3104
3166
|
if (options.creditCardField) {
|
|
3105
3167
|
var creditCardField = validator.getFieldElements(options.creditCardField);
|
|
3106
|
-
validator.onLiveChange(creditCardField, '
|
|
3107
|
-
var status = validator.getStatus($field,
|
|
3168
|
+
validator.onLiveChange(creditCardField, 'live_' + validatorName, function() {
|
|
3169
|
+
var status = validator.getStatus($field, validatorName);
|
|
3108
3170
|
if (status !== validator.STATUS_NOT_VALIDATED) {
|
|
3109
3171
|
validator.revalidateField($field);
|
|
3110
3172
|
}
|
|
@@ -3120,10 +3182,10 @@ if (typeof jQuery === 'undefined') {
|
|
|
3120
3182
|
* @param {Object} options Consists of the following key:
|
|
3121
3183
|
* - creditCardField: The credit card number field
|
|
3122
3184
|
*/
|
|
3123
|
-
destroy: function(validator, $field, options) {
|
|
3185
|
+
destroy: function(validator, $field, options, validatorName) {
|
|
3124
3186
|
if (options.creditCardField) {
|
|
3125
3187
|
var creditCardField = validator.getFieldElements(options.creditCardField);
|
|
3126
|
-
validator.offLiveChange(creditCardField, '
|
|
3188
|
+
validator.offLiveChange(creditCardField, 'live_' + validatorName);
|
|
3127
3189
|
}
|
|
3128
3190
|
},
|
|
3129
3191
|
|
|
@@ -3137,8 +3199,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
3137
3199
|
* - message: The invalid message
|
|
3138
3200
|
* @returns {Boolean}
|
|
3139
3201
|
*/
|
|
3140
|
-
validate: function(validator, $field, options) {
|
|
3141
|
-
var value = validator.getFieldValue($field,
|
|
3202
|
+
validate: function(validator, $field, options, validatorName) {
|
|
3203
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
3142
3204
|
if (value === '') {
|
|
3143
3205
|
return true;
|
|
3144
3206
|
}
|
|
@@ -3156,7 +3218,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
3156
3218
|
if (creditCard === '') {
|
|
3157
3219
|
return true;
|
|
3158
3220
|
}
|
|
3159
|
-
|
|
3221
|
+
|
|
3160
3222
|
creditCard = creditCard.replace(/\D/g, '');
|
|
3161
3223
|
|
|
3162
3224
|
// Supported credit card types
|
|
@@ -3273,8 +3335,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
3273
3335
|
* ii) date, time and A (indicating AM or PM)
|
|
3274
3336
|
* @returns {Boolean|Object}
|
|
3275
3337
|
*/
|
|
3276
|
-
validate: function(validator, $field, options) {
|
|
3277
|
-
var value = validator.getFieldValue($field,
|
|
3338
|
+
validate: function(validator, $field, options, validatorName) {
|
|
3339
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
3278
3340
|
if (value === '') {
|
|
3279
3341
|
return true;
|
|
3280
3342
|
}
|
|
@@ -3466,6 +3528,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
3466
3528
|
|
|
3467
3529
|
return {
|
|
3468
3530
|
valid: valid,
|
|
3531
|
+
date: date,
|
|
3469
3532
|
message: message
|
|
3470
3533
|
};
|
|
3471
3534
|
},
|
|
@@ -3614,12 +3677,12 @@ if (typeof jQuery === 'undefined') {
|
|
|
3614
3677
|
* @param {Object} options Consists of the following key:
|
|
3615
3678
|
* - field: The name of field that will be used to compare with current one
|
|
3616
3679
|
*/
|
|
3617
|
-
init: function(validator, $field, options) {
|
|
3680
|
+
init: function(validator, $field, options, validatorName) {
|
|
3618
3681
|
var fields = options.field.split(',');
|
|
3619
3682
|
for (var i = 0; i < fields.length; i++) {
|
|
3620
3683
|
var compareWith = validator.getFieldElements(fields[i]);
|
|
3621
|
-
validator.onLiveChange(compareWith, '
|
|
3622
|
-
var status = validator.getStatus($field,
|
|
3684
|
+
validator.onLiveChange(compareWith, 'live_' + validatorName, function() {
|
|
3685
|
+
var status = validator.getStatus($field, validatorName);
|
|
3623
3686
|
if (status !== validator.STATUS_NOT_VALIDATED) {
|
|
3624
3687
|
validator.revalidateField($field);
|
|
3625
3688
|
}
|
|
@@ -3635,11 +3698,11 @@ if (typeof jQuery === 'undefined') {
|
|
|
3635
3698
|
* @param {Object} options Consists of the following key:
|
|
3636
3699
|
* - field: The name of field that will be used to compare with current one
|
|
3637
3700
|
*/
|
|
3638
|
-
destroy: function(validator, $field, options) {
|
|
3701
|
+
destroy: function(validator, $field, options, validatorName) {
|
|
3639
3702
|
var fields = options.field.split(',');
|
|
3640
3703
|
for (var i = 0; i < fields.length; i++) {
|
|
3641
3704
|
var compareWith = validator.getFieldElements(fields[i]);
|
|
3642
|
-
validator.offLiveChange(compareWith, '
|
|
3705
|
+
validator.offLiveChange(compareWith, 'live_' + validatorName);
|
|
3643
3706
|
}
|
|
3644
3707
|
},
|
|
3645
3708
|
|
|
@@ -3653,8 +3716,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
3653
3716
|
* - message: The invalid message
|
|
3654
3717
|
* @returns {Boolean}
|
|
3655
3718
|
*/
|
|
3656
|
-
validate: function(validator, $field, options) {
|
|
3657
|
-
var value = validator.getFieldValue($field,
|
|
3719
|
+
validate: function(validator, $field, options, validatorName) {
|
|
3720
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
3658
3721
|
if (value === '') {
|
|
3659
3722
|
return true;
|
|
3660
3723
|
}
|
|
@@ -3668,11 +3731,11 @@ if (typeof jQuery === 'undefined') {
|
|
|
3668
3731
|
continue;
|
|
3669
3732
|
}
|
|
3670
3733
|
|
|
3671
|
-
var compareValue = validator.getFieldValue(compareWith,
|
|
3734
|
+
var compareValue = validator.getFieldValue(compareWith, validatorName);
|
|
3672
3735
|
if (value === compareValue) {
|
|
3673
3736
|
isValid = false;
|
|
3674
3737
|
} else if (compareValue !== '') {
|
|
3675
|
-
validator.updateStatus(compareWith, validator.STATUS_VALID,
|
|
3738
|
+
validator.updateStatus(compareWith, validator.STATUS_VALID, validatorName);
|
|
3676
3739
|
}
|
|
3677
3740
|
}
|
|
3678
3741
|
|
|
@@ -3698,8 +3761,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
3698
3761
|
* @param {Object} [options]
|
|
3699
3762
|
* @returns {Boolean}
|
|
3700
3763
|
*/
|
|
3701
|
-
validate: function(validator, $field, options) {
|
|
3702
|
-
var value = validator.getFieldValue($field,
|
|
3764
|
+
validate: function(validator, $field, options, validatorName) {
|
|
3765
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
3703
3766
|
if (value === '') {
|
|
3704
3767
|
return true;
|
|
3705
3768
|
}
|
|
@@ -3720,9 +3783,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
3720
3783
|
FormValidation.Validator.ean = {
|
|
3721
3784
|
/**
|
|
3722
3785
|
* Validate EAN (International Article Number)
|
|
3723
|
-
* Examples:
|
|
3724
|
-
* - Valid: 73513537, 9780471117094, 4006381333931
|
|
3725
|
-
* - Invalid: 73513536
|
|
3726
3786
|
*
|
|
3727
3787
|
* @see http://en.wikipedia.org/wiki/European_Article_Number
|
|
3728
3788
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
@@ -3731,8 +3791,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
3731
3791
|
* - message: The invalid message
|
|
3732
3792
|
* @returns {Boolean}
|
|
3733
3793
|
*/
|
|
3734
|
-
validate: function(validator, $field, options) {
|
|
3735
|
-
var value = validator.getFieldValue($field,
|
|
3794
|
+
validate: function(validator, $field, options, validatorName) {
|
|
3795
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
3736
3796
|
if (value === '') {
|
|
3737
3797
|
return true;
|
|
3738
3798
|
}
|
|
@@ -3790,8 +3850,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
3790
3850
|
* - message: The invalid message
|
|
3791
3851
|
* @returns {Object|Boolean}
|
|
3792
3852
|
*/
|
|
3793
|
-
validate: function(validator, $field, options) {
|
|
3794
|
-
var value = validator.getFieldValue($field,
|
|
3853
|
+
validate: function(validator, $field, options, validatorName) {
|
|
3854
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
3795
3855
|
if (value === '') {
|
|
3796
3856
|
return true;
|
|
3797
3857
|
}
|
|
@@ -3844,8 +3904,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
3844
3904
|
* - separator: Regex for character or characters expected as separator between addresses; default is comma /[,;]/, i.e. comma or semicolon.
|
|
3845
3905
|
* @returns {Boolean}
|
|
3846
3906
|
*/
|
|
3847
|
-
validate: function(validator, $field, options) {
|
|
3848
|
-
var value = validator.getFieldValue($field,
|
|
3907
|
+
validate: function(validator, $field, options, validatorName) {
|
|
3908
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
3849
3909
|
if (value === '') {
|
|
3850
3910
|
return true;
|
|
3851
3911
|
}
|
|
@@ -3944,8 +4004,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
3944
4004
|
* - type: The allowed MIME type, separated by a comma
|
|
3945
4005
|
* @returns {Boolean}
|
|
3946
4006
|
*/
|
|
3947
|
-
validate: function(validator, $field, options) {
|
|
3948
|
-
var value = validator.getFieldValue($field,
|
|
4007
|
+
validate: function(validator, $field, options, validatorName) {
|
|
4008
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
3949
4009
|
if (value === '') {
|
|
3950
4010
|
return true;
|
|
3951
4011
|
}
|
|
@@ -4042,29 +4102,25 @@ if (typeof jQuery === 'undefined') {
|
|
|
4042
4102
|
* - message: The invalid message
|
|
4043
4103
|
* @returns {Boolean|Object}
|
|
4044
4104
|
*/
|
|
4045
|
-
validate: function(validator, $field, options) {
|
|
4046
|
-
var value = validator.getFieldValue($field,
|
|
4105
|
+
validate: function(validator, $field, options, validatorName) {
|
|
4106
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
4047
4107
|
if (value === '') {
|
|
4048
4108
|
return true;
|
|
4049
4109
|
}
|
|
4050
|
-
|
|
4110
|
+
|
|
4051
4111
|
value = this._format(value);
|
|
4052
|
-
if (!$.isNumeric(value)) {
|
|
4053
|
-
return false;
|
|
4054
|
-
}
|
|
4055
4112
|
|
|
4056
4113
|
var locale = validator.getLocale(),
|
|
4057
4114
|
compareTo = $.isNumeric(options.value) ? options.value : validator.getDynamicOption($field, options.value),
|
|
4058
4115
|
compareToValue = this._format(compareTo);
|
|
4059
4116
|
|
|
4060
|
-
value = parseFloat(value);
|
|
4061
4117
|
return (options.inclusive === true || options.inclusive === undefined)
|
|
4062
4118
|
? {
|
|
4063
|
-
valid: value >= compareToValue,
|
|
4119
|
+
valid: $.isNumeric(value) && parseFloat(value) >= compareToValue,
|
|
4064
4120
|
message: FormValidation.Helper.format(options.message || FormValidation.I18n[locale].greaterThan['default'], compareTo)
|
|
4065
4121
|
}
|
|
4066
4122
|
: {
|
|
4067
|
-
valid: value > compareToValue,
|
|
4123
|
+
valid: $.isNumeric(value) && parseFloat(value) > compareToValue,
|
|
4068
4124
|
message: FormValidation.Helper.format(options.message || FormValidation.I18n[locale].greaterThan.notInclusive, compareTo)
|
|
4069
4125
|
};
|
|
4070
4126
|
},
|
|
@@ -4086,9 +4142,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
4086
4142
|
FormValidation.Validator.grid = {
|
|
4087
4143
|
/**
|
|
4088
4144
|
* Validate GRId (Global Release Identifier)
|
|
4089
|
-
* Examples:
|
|
4090
|
-
* - Valid: A12425GABC1234002M, A1-2425G-ABC1234002-M, A1 2425G ABC1234002 M, Grid:A1-2425G-ABC1234002-M
|
|
4091
|
-
* - Invalid: A1-2425G-ABC1234002-Q
|
|
4092
4145
|
*
|
|
4093
4146
|
* @see http://en.wikipedia.org/wiki/Global_Release_Identifier
|
|
4094
4147
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
@@ -4097,8 +4150,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
4097
4150
|
* - message: The invalid message
|
|
4098
4151
|
* @returns {Boolean}
|
|
4099
4152
|
*/
|
|
4100
|
-
validate: function(validator, $field, options) {
|
|
4101
|
-
var value = validator.getFieldValue($field,
|
|
4153
|
+
validate: function(validator, $field, options, validatorName) {
|
|
4154
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
4102
4155
|
if (value === '') {
|
|
4103
4156
|
return true;
|
|
4104
4157
|
}
|
|
@@ -4134,8 +4187,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
4134
4187
|
* - message: The invalid message
|
|
4135
4188
|
* @returns {Boolean}
|
|
4136
4189
|
*/
|
|
4137
|
-
validate: function(validator, $field, options) {
|
|
4138
|
-
var value = validator.getFieldValue($field,
|
|
4190
|
+
validate: function(validator, $field, options, validatorName) {
|
|
4191
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
4139
4192
|
if (value === '') {
|
|
4140
4193
|
return true;
|
|
4141
4194
|
}
|
|
@@ -4227,9 +4280,11 @@ if (typeof jQuery === 'undefined') {
|
|
|
4227
4280
|
SK: 'Slovakia',
|
|
4228
4281
|
SM: 'San Marino',
|
|
4229
4282
|
SN: 'Senegal',
|
|
4283
|
+
TL: 'East Timor',
|
|
4230
4284
|
TN: 'Tunisia',
|
|
4231
4285
|
TR: 'Turkey',
|
|
4232
|
-
VG: 'Virgin Islands, British'
|
|
4286
|
+
VG: 'Virgin Islands, British',
|
|
4287
|
+
XK: 'Republic of Kosovo'
|
|
4233
4288
|
}
|
|
4234
4289
|
}
|
|
4235
4290
|
}
|
|
@@ -4238,7 +4293,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
4238
4293
|
FormValidation.Validator.iban = {
|
|
4239
4294
|
html5Attributes: {
|
|
4240
4295
|
message: 'message',
|
|
4241
|
-
country: 'country'
|
|
4296
|
+
country: 'country',
|
|
4297
|
+
sepa: 'sepa'
|
|
4242
4298
|
},
|
|
4243
4299
|
|
|
4244
4300
|
// http://www.swift.com/dsp/resources/documents/IBAN_Registry.pdf
|
|
@@ -4320,11 +4376,21 @@ if (typeof jQuery === 'undefined') {
|
|
|
4320
4376
|
SK: 'SK[0-9]{2}[0-9]{4}[0-9]{6}[0-9]{10}', // Slovakia
|
|
4321
4377
|
SM: 'SM[0-9]{2}[A-Z]{1}[0-9]{5}[0-9]{5}[A-Z0-9]{12}', // San Marino
|
|
4322
4378
|
SN: 'SN[0-9]{2}[A-Z]{1}[0-9]{23}', // Senegal
|
|
4379
|
+
TL: 'TL38[0-9]{3}[0-9]{14}[0-9]{2}', // East Timor
|
|
4323
4380
|
TN: 'TN59[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}', // Tunisia
|
|
4324
4381
|
TR: 'TR[0-9]{2}[0-9]{5}[A-Z0-9]{1}[A-Z0-9]{16}', // Turkey
|
|
4325
|
-
VG: 'VG[0-9]{2}[A-Z]{4}[0-9]{16}'
|
|
4382
|
+
VG: 'VG[0-9]{2}[A-Z]{4}[0-9]{16}', // Virgin Islands, British
|
|
4383
|
+
XK: 'XK[0-9]{2}[0-9]{4}[0-9]{10}[0-9]{2}' // Republic of Kosovo
|
|
4326
4384
|
},
|
|
4327
4385
|
|
|
4386
|
+
// List of SEPA country codes
|
|
4387
|
+
SEPA_COUNTRIES: [
|
|
4388
|
+
'AT', 'BE', 'BG', 'CH', 'CY', 'CZ', 'DE', 'DK', 'EE', 'ES',
|
|
4389
|
+
'FI', 'FR', 'GB', 'GI', 'GR', 'HR', 'HU', 'IE', 'IS', 'IT',
|
|
4390
|
+
'LI', 'LT', 'LU', 'LV', 'MC', 'MT', 'NL', 'NO', 'PL', 'PT',
|
|
4391
|
+
'RO', 'SE', 'SI', 'SK', 'SM'
|
|
4392
|
+
],
|
|
4393
|
+
|
|
4328
4394
|
/**
|
|
4329
4395
|
* Validate an International Bank Account Number (IBAN)
|
|
4330
4396
|
* To test it, take the sample IBAN from
|
|
@@ -4339,10 +4405,12 @@ if (typeof jQuery === 'undefined') {
|
|
|
4339
4405
|
* - Name of field which its value defines the country code
|
|
4340
4406
|
* - Name of callback function that returns the country code
|
|
4341
4407
|
* - A callback function that returns the country code
|
|
4408
|
+
* - sepa: Set it to true (false) to indicate that the IBAN number must be (not be) from SEPA countries
|
|
4409
|
+
* By default, this option is not defined
|
|
4342
4410
|
* @returns {Boolean|Object}
|
|
4343
4411
|
*/
|
|
4344
|
-
validate: function(validator, $field, options) {
|
|
4345
|
-
var value = validator.getFieldValue($field,
|
|
4412
|
+
validate: function(validator, $field, options, validatorName) {
|
|
4413
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
4346
4414
|
if (value === '') {
|
|
4347
4415
|
return true;
|
|
4348
4416
|
}
|
|
@@ -4358,7 +4426,17 @@ if (typeof jQuery === 'undefined') {
|
|
|
4358
4426
|
|
|
4359
4427
|
var locale = validator.getLocale();
|
|
4360
4428
|
if (!this.REGEX[country]) {
|
|
4361
|
-
return
|
|
4429
|
+
return false;
|
|
4430
|
+
}
|
|
4431
|
+
|
|
4432
|
+
// Check whether or not the sepa option is enabled
|
|
4433
|
+
if (typeof options.sepa !== undefined) {
|
|
4434
|
+
var isSepaCountry = $.inArray(country, this.SEPA_COUNTRIES) !== -1;
|
|
4435
|
+
if (((options.sepa === 'true' || options.sepa === true) && !isSepaCountry)
|
|
4436
|
+
|| ((options.sepa === 'false' || options.sepa === false) && isSepaCountry))
|
|
4437
|
+
{
|
|
4438
|
+
return false;
|
|
4439
|
+
}
|
|
4362
4440
|
}
|
|
4363
4441
|
|
|
4364
4442
|
if (!(new RegExp('^' + this.REGEX[country] + '$')).test(value)) {
|
|
@@ -4456,10 +4534,10 @@ if (typeof jQuery === 'undefined') {
|
|
|
4456
4534
|
* - Name of field which its value defines the country code
|
|
4457
4535
|
* - Name of callback function that returns the country code
|
|
4458
4536
|
* - A callback function that returns the country code
|
|
4459
|
-
* @returns {
|
|
4537
|
+
* @returns {Object}
|
|
4460
4538
|
*/
|
|
4461
|
-
validate: function(validator, $field, options) {
|
|
4462
|
-
var value = validator.getFieldValue($field,
|
|
4539
|
+
validate: function(validator, $field, options, validatorName) {
|
|
4540
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
4463
4541
|
if (value === '') {
|
|
4464
4542
|
return true;
|
|
4465
4543
|
}
|
|
@@ -4477,13 +4555,12 @@ if (typeof jQuery === 'undefined') {
|
|
|
4477
4555
|
return true;
|
|
4478
4556
|
}
|
|
4479
4557
|
|
|
4480
|
-
var method
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
};
|
|
4558
|
+
var method = ['_', country.toLowerCase()].join(''),
|
|
4559
|
+
result = this[method](value);
|
|
4560
|
+
result = (result === true || result === false) ? { valid: result } : result;
|
|
4561
|
+
result.message = FormValidation.Helper.format(options.message || FormValidation.I18n[locale].id.country, FormValidation.I18n[locale].id.countries[country.toUpperCase()]);
|
|
4562
|
+
|
|
4563
|
+
return result;
|
|
4487
4564
|
},
|
|
4488
4565
|
|
|
4489
4566
|
/**
|
|
@@ -4576,9 +4653,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
4576
4653
|
|
|
4577
4654
|
/**
|
|
4578
4655
|
* Validate Bulgarian national identification number (EGN)
|
|
4579
|
-
* Examples:
|
|
4580
|
-
* - Valid: 7523169263, 8032056031, 803205 603 1, 8001010008, 7501020018, 7552010005, 7542011030
|
|
4581
|
-
* - Invalid: 8019010008
|
|
4582
4656
|
*
|
|
4583
4657
|
* @see http://en.wikipedia.org/wiki/Uniform_civil_number
|
|
4584
4658
|
* @param {String} value The ID
|
|
@@ -4616,9 +4690,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
4616
4690
|
|
|
4617
4691
|
/**
|
|
4618
4692
|
* Validate Brazilian national identification number (CPF)
|
|
4619
|
-
* Examples:
|
|
4620
|
-
* - Valid: 39053344705, 390.533.447-05, 111.444.777-35
|
|
4621
|
-
* - Invalid: 231.002.999-00
|
|
4622
4693
|
*
|
|
4623
4694
|
* @see http://en.wikipedia.org/wiki/Cadastro_de_Pessoas_F%C3%ADsicas
|
|
4624
4695
|
* @param {String} value The ID
|
|
@@ -4657,8 +4728,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
4657
4728
|
|
|
4658
4729
|
/**
|
|
4659
4730
|
* Validate Swiss Social Security Number (AHV-Nr/No AVS)
|
|
4660
|
-
* Examples:
|
|
4661
|
-
* - Valid: 756.1234.5678.95, 7561234567895
|
|
4662
4731
|
*
|
|
4663
4732
|
* @see http://en.wikipedia.org/wiki/National_identification_number#Switzerland
|
|
4664
4733
|
* @see http://www.bsv.admin.ch/themen/ahv/00011/02185/index.html?lang=de
|
|
@@ -4682,8 +4751,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
4682
4751
|
|
|
4683
4752
|
/**
|
|
4684
4753
|
* Validate Chilean national identification number (RUN/RUT)
|
|
4685
|
-
* Examples:
|
|
4686
|
-
* - Valid: 76086428-5, 22060449-7, 12531909-2
|
|
4687
4754
|
*
|
|
4688
4755
|
* @see http://en.wikipedia.org/wiki/National_identification_number#Chile
|
|
4689
4756
|
* @see https://palena.sii.cl/cvc/dte/ee_empresas_emisoras.html for samples
|
|
@@ -4742,7 +4809,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
4742
4809
|
if (!/^\d{15}$/.test(value) && !/^\d{17}[\dXx]{1}$/.test(value)) {
|
|
4743
4810
|
return false;
|
|
4744
4811
|
}
|
|
4745
|
-
|
|
4812
|
+
|
|
4746
4813
|
// Check China PR Administrative division code
|
|
4747
4814
|
var adminDivisionCodes = {
|
|
4748
4815
|
11: {
|
|
@@ -5196,11 +5263,11 @@ if (typeof jQuery === 'undefined') {
|
|
|
5196
5263
|
81: { 0: [0] },
|
|
5197
5264
|
82: { 0: [0] }
|
|
5198
5265
|
};
|
|
5199
|
-
|
|
5266
|
+
|
|
5200
5267
|
var provincial = parseInt(value.substr(0, 2), 10),
|
|
5201
5268
|
prefectural = parseInt(value.substr(2, 2), 10),
|
|
5202
5269
|
county = parseInt(value.substr(4, 2), 10);
|
|
5203
|
-
|
|
5270
|
+
|
|
5204
5271
|
if (!adminDivisionCodes[provincial] || !adminDivisionCodes[provincial][prefectural]) {
|
|
5205
5272
|
return false;
|
|
5206
5273
|
}
|
|
@@ -5218,12 +5285,12 @@ if (typeof jQuery === 'undefined') {
|
|
|
5218
5285
|
if (!inRange) {
|
|
5219
5286
|
return false;
|
|
5220
5287
|
}
|
|
5221
|
-
|
|
5288
|
+
|
|
5222
5289
|
// Check date of birth
|
|
5223
5290
|
var dob;
|
|
5224
5291
|
if (value.length === 18) {
|
|
5225
5292
|
dob = value.substr(6, 8);
|
|
5226
|
-
} else /* length == 15 */ {
|
|
5293
|
+
} else /* length == 15 */ {
|
|
5227
5294
|
dob = '19' + value.substr(6, 6);
|
|
5228
5295
|
}
|
|
5229
5296
|
var year = parseInt(dob.substr(0, 4), 10),
|
|
@@ -5232,7 +5299,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
5232
5299
|
if (!FormValidation.Helper.date(year, month, day)) {
|
|
5233
5300
|
return false;
|
|
5234
5301
|
}
|
|
5235
|
-
|
|
5302
|
+
|
|
5236
5303
|
// Check checksum (18-digit system only)
|
|
5237
5304
|
if (value.length === 18) {
|
|
5238
5305
|
var sum = 0,
|
|
@@ -5244,15 +5311,12 @@ if (typeof jQuery === 'undefined') {
|
|
|
5244
5311
|
var checksum = (value.charAt(17).toUpperCase() !== 'X') ? parseInt(value.charAt(17), 10) : 10;
|
|
5245
5312
|
return checksum === sum;
|
|
5246
5313
|
}
|
|
5247
|
-
|
|
5314
|
+
|
|
5248
5315
|
return true;
|
|
5249
5316
|
},
|
|
5250
|
-
|
|
5317
|
+
|
|
5251
5318
|
/**
|
|
5252
5319
|
* Validate Czech national identification number (RC)
|
|
5253
|
-
* Examples:
|
|
5254
|
-
* - Valid: 7103192745, 991231123
|
|
5255
|
-
* - Invalid: 1103492745, 590312123
|
|
5256
5320
|
*
|
|
5257
5321
|
* @param {String} value The ID
|
|
5258
5322
|
* @returns {Boolean}
|
|
@@ -5293,9 +5357,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
5293
5357
|
|
|
5294
5358
|
/**
|
|
5295
5359
|
* Validate Danish Personal Identification number (CPR)
|
|
5296
|
-
* Examples:
|
|
5297
|
-
* - Valid: 2110625629, 211062-5629
|
|
5298
|
-
* - Invalid: 511062-5629
|
|
5299
5360
|
*
|
|
5300
5361
|
* @see https://en.wikipedia.org/wiki/Personal_identification_number_(Denmark)
|
|
5301
5362
|
* @param {String} value The ID
|
|
@@ -5328,8 +5389,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
5328
5389
|
|
|
5329
5390
|
/**
|
|
5330
5391
|
* Validate Estonian Personal Identification Code (isikukood)
|
|
5331
|
-
* Examples:
|
|
5332
|
-
* - Valid: 37605030299
|
|
5333
5392
|
*
|
|
5334
5393
|
* @see http://et.wikipedia.org/wiki/Isikukood
|
|
5335
5394
|
* @param {String} value The ID
|
|
@@ -5342,22 +5401,11 @@ if (typeof jQuery === 'undefined') {
|
|
|
5342
5401
|
|
|
5343
5402
|
/**
|
|
5344
5403
|
* Validate Spanish personal identity code (DNI)
|
|
5345
|
-
* Support
|
|
5346
|
-
* and iii) CIF (for legal entities)
|
|
5347
|
-
*
|
|
5348
|
-
* Examples:
|
|
5349
|
-
* - Valid:
|
|
5350
|
-
* i) 54362315K, 54362315-K
|
|
5351
|
-
* ii) X2482300W, X-2482300W, X-2482300-W
|
|
5352
|
-
* iii) A58818501, A-58818501
|
|
5353
|
-
* - Invalid:
|
|
5354
|
-
* i) 54362315Z
|
|
5355
|
-
* ii) X-2482300A
|
|
5356
|
-
* iii) K58818501, G58818507
|
|
5404
|
+
* Support DNI (for Spanish citizens), NIE (for foreign people) and CIF (for legal entities)
|
|
5357
5405
|
*
|
|
5358
5406
|
* @see https://en.wikipedia.org/wiki/National_identification_number#Spain
|
|
5359
5407
|
* @param {String} value The ID
|
|
5360
|
-
* @returns {Boolean}
|
|
5408
|
+
* @returns {Boolean|Object}
|
|
5361
5409
|
*/
|
|
5362
5410
|
_es: function(value) {
|
|
5363
5411
|
var isDNI = /^[0-9]{8}[-]{0,1}[A-HJ-NP-TV-Z]$/.test(value),
|
|
@@ -5368,19 +5416,25 @@ if (typeof jQuery === 'undefined') {
|
|
|
5368
5416
|
}
|
|
5369
5417
|
|
|
5370
5418
|
value = value.replace(/-/g, '');
|
|
5371
|
-
var check;
|
|
5419
|
+
var check, type, isValid = true;
|
|
5372
5420
|
if (isDNI || isNIE) {
|
|
5421
|
+
type = 'DNI';
|
|
5373
5422
|
var index = 'XYZ'.indexOf(value.charAt(0));
|
|
5374
5423
|
if (index !== -1) {
|
|
5375
5424
|
// It is NIE number
|
|
5376
5425
|
value = index + value.substr(1) + '';
|
|
5426
|
+
type = 'NIE';
|
|
5377
5427
|
}
|
|
5378
5428
|
|
|
5379
5429
|
check = parseInt(value.substr(0, 8), 10);
|
|
5380
5430
|
check = 'TRWAGMYFPDXBNJZSQVHLCKE'[check % 23];
|
|
5381
|
-
return
|
|
5431
|
+
return {
|
|
5432
|
+
valid: (check === value.substr(8, 1)),
|
|
5433
|
+
type: type
|
|
5434
|
+
};
|
|
5382
5435
|
} else {
|
|
5383
5436
|
check = value.substr(1, 7);
|
|
5437
|
+
type = 'CIF';
|
|
5384
5438
|
var letter = value[0],
|
|
5385
5439
|
control = value.substr(-1),
|
|
5386
5440
|
sum = 0;
|
|
@@ -5407,25 +5461,27 @@ if (typeof jQuery === 'undefined') {
|
|
|
5407
5461
|
if (lastDigit !== 0) {
|
|
5408
5462
|
lastDigit = 10 - lastDigit;
|
|
5409
5463
|
}
|
|
5410
|
-
|
|
5464
|
+
|
|
5411
5465
|
if ('KQS'.indexOf(letter) !== -1) {
|
|
5412
5466
|
// If the CIF starts with a K, Q or S, the control digit must be a letter
|
|
5413
|
-
|
|
5467
|
+
isValid = (control === 'JABCDEFGHI'[lastDigit]);
|
|
5414
5468
|
} else if ('ABEH'.indexOf(letter) !== -1) {
|
|
5415
5469
|
// If it starts with A, B, E or H, it has to be a number
|
|
5416
|
-
|
|
5470
|
+
isValid = (control === ('' + lastDigit));
|
|
5417
5471
|
} else {
|
|
5418
5472
|
// In any other case, it doesn't matter
|
|
5419
|
-
|
|
5473
|
+
isValid = (control === ('' + lastDigit) || control === 'JABCDEFGHI'[lastDigit]);
|
|
5420
5474
|
}
|
|
5475
|
+
|
|
5476
|
+
return {
|
|
5477
|
+
valid: isValid,
|
|
5478
|
+
type: type
|
|
5479
|
+
};
|
|
5421
5480
|
}
|
|
5422
5481
|
},
|
|
5423
5482
|
|
|
5424
5483
|
/**
|
|
5425
5484
|
* Validate Finnish Personal Identity Code (HETU)
|
|
5426
|
-
* Examples:
|
|
5427
|
-
* - Valid: 311280-888Y, 131052-308T
|
|
5428
|
-
* - Invalid: 131052-308U, 310252-308Y
|
|
5429
5485
|
*
|
|
5430
5486
|
* @param {String} value The ID
|
|
5431
5487
|
* @returns {Boolean}
|
|
@@ -5459,9 +5515,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
5459
5515
|
|
|
5460
5516
|
/**
|
|
5461
5517
|
* Validate Croatian personal identification number (OIB)
|
|
5462
|
-
* Examples:
|
|
5463
|
-
* - Valid: 33392005961
|
|
5464
|
-
* - Invalid: 33392005962
|
|
5465
5518
|
*
|
|
5466
5519
|
* @param {String} value The ID
|
|
5467
5520
|
* @returns {Boolean}
|
|
@@ -5475,9 +5528,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
5475
5528
|
|
|
5476
5529
|
/**
|
|
5477
5530
|
* Validate Irish Personal Public Service Number (PPS)
|
|
5478
|
-
* Examples:
|
|
5479
|
-
* - Valid: 6433435F, 6433435FT, 6433435FW, 6433435OA, 6433435IH, 1234567TW, 1234567FA
|
|
5480
|
-
* - Invalid: 6433435E, 6433435VH
|
|
5481
5531
|
*
|
|
5482
5532
|
* @see https://en.wikipedia.org/wiki/Personal_Public_Service_Number
|
|
5483
5533
|
* @param {String} value The ID
|
|
@@ -5513,10 +5563,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
5513
5563
|
|
|
5514
5564
|
/**
|
|
5515
5565
|
* Validate Iceland national identification number (Kennitala)
|
|
5516
|
-
* Examples:
|
|
5517
|
-
* - Valid: 120174-3399, 1201743399, 0902862349
|
|
5518
5566
|
*
|
|
5519
|
-
*
|
|
5567
|
+
* @see http://en.wikipedia.org/wiki/Kennitala
|
|
5520
5568
|
* @param {String} value The ID
|
|
5521
5569
|
* @returns {Boolean}
|
|
5522
5570
|
*/
|
|
@@ -5546,9 +5594,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
5546
5594
|
|
|
5547
5595
|
/**
|
|
5548
5596
|
* Validate Lithuanian Personal Code (Asmens kodas)
|
|
5549
|
-
* Examples:
|
|
5550
|
-
* - Valid: 38703181745
|
|
5551
|
-
* - Invalid: 38703181746, 78703181745, 38703421745
|
|
5552
5597
|
*
|
|
5553
5598
|
* @see http://en.wikipedia.org/wiki/National_identification_number#Lithuania
|
|
5554
5599
|
* @see http://www.adomas.org/midi2007/pcode.html
|
|
@@ -5595,9 +5640,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
5595
5640
|
|
|
5596
5641
|
/**
|
|
5597
5642
|
* Validate Latvian Personal Code (Personas kods)
|
|
5598
|
-
* Examples:
|
|
5599
|
-
* - Valid: 161175-19997, 16117519997
|
|
5600
|
-
* - Invalid: 161375-19997
|
|
5601
5643
|
*
|
|
5602
5644
|
* @see http://laacz.lv/2006/11/25/pk-parbaudes-algoritms/
|
|
5603
5645
|
* @param {String} value The ID
|
|
@@ -5630,16 +5672,17 @@ if (typeof jQuery === 'undefined') {
|
|
|
5630
5672
|
|
|
5631
5673
|
/**
|
|
5632
5674
|
* Validate Dutch national identification number (BSN)
|
|
5633
|
-
* Examples:
|
|
5634
|
-
* - Valid: 111222333, 941331490, 9413.31.490
|
|
5635
|
-
* - Invalid: 111252333
|
|
5636
5675
|
*
|
|
5637
5676
|
* @see https://nl.wikipedia.org/wiki/Burgerservicenummer
|
|
5638
5677
|
* @param {String} value The ID
|
|
5639
5678
|
* @returns {Boolean}
|
|
5640
5679
|
*/
|
|
5641
5680
|
_nl: function(value) {
|
|
5642
|
-
|
|
5681
|
+
if (value.length < 8) {
|
|
5682
|
+
return false;
|
|
5683
|
+
}
|
|
5684
|
+
|
|
5685
|
+
if (value.length === 8) {
|
|
5643
5686
|
value = '0' + value;
|
|
5644
5687
|
}
|
|
5645
5688
|
if (!/^[0-9]{4}[.]{0,1}[0-9]{2}[.]{0,1}[0-9]{3}$/.test(value)) {
|
|
@@ -5660,10 +5703,10 @@ if (typeof jQuery === 'undefined') {
|
|
|
5660
5703
|
}
|
|
5661
5704
|
return (sum + '' === value.charAt(length - 1));
|
|
5662
5705
|
},
|
|
5663
|
-
|
|
5706
|
+
|
|
5664
5707
|
/**
|
|
5665
5708
|
* Validate Poland citizen number (PESEL)
|
|
5666
|
-
*
|
|
5709
|
+
*
|
|
5667
5710
|
* @see http://en.wikipedia.org/wiki/National_identification_number#Poland
|
|
5668
5711
|
* @see http://en.wikipedia.org/wiki/PESEL
|
|
5669
5712
|
* @param {String} value The ID
|
|
@@ -5692,9 +5735,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
5692
5735
|
|
|
5693
5736
|
/**
|
|
5694
5737
|
* Validate Romanian numerical personal code (CNP)
|
|
5695
|
-
* Examples:
|
|
5696
|
-
* - Valid: 1630615123457, 1800101221144
|
|
5697
|
-
* - Invalid: 8800101221144, 1632215123457, 1630615123458
|
|
5698
5738
|
*
|
|
5699
5739
|
* @see http://en.wikipedia.org/wiki/National_identification_number#Romania
|
|
5700
5740
|
* @param {String} value The ID
|
|
@@ -5748,9 +5788,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
5748
5788
|
|
|
5749
5789
|
/**
|
|
5750
5790
|
* Validate Swedish personal identity number (personnummer)
|
|
5751
|
-
* Examples:
|
|
5752
|
-
* - Valid: 8112289874, 811228-9874, 811228+9874
|
|
5753
|
-
* - Invalid: 811228-9873
|
|
5754
5791
|
*
|
|
5755
5792
|
* @see http://en.wikipedia.org/wiki/Personal_identity_number_(Sweden)
|
|
5756
5793
|
* @param {String} value The ID
|
|
@@ -5775,9 +5812,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
5775
5812
|
|
|
5776
5813
|
/**
|
|
5777
5814
|
* Validate Slovak national identifier number (RC)
|
|
5778
|
-
* Examples:
|
|
5779
|
-
* - Valid: 7103192745, 991231123
|
|
5780
|
-
* - Invalid: 7103192746, 1103492745
|
|
5781
5815
|
*
|
|
5782
5816
|
* @param {String} value The ID
|
|
5783
5817
|
* @returns {Boolean}
|
|
@@ -5800,9 +5834,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
5800
5834
|
|
|
5801
5835
|
/**
|
|
5802
5836
|
* Validate Thailand citizen number
|
|
5803
|
-
* Examples:
|
|
5804
|
-
* - Valid: 7145620509547, 3688699975685, 2368719339716
|
|
5805
|
-
* - Invalid: 1100800092310
|
|
5806
5837
|
*
|
|
5807
5838
|
* @see http://en.wikipedia.org/wiki/National_identification_number#Thailand
|
|
5808
5839
|
* @param {String} value The ID
|
|
@@ -5823,9 +5854,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
5823
5854
|
|
|
5824
5855
|
/**
|
|
5825
5856
|
* Validate South African ID
|
|
5826
|
-
* Example:
|
|
5827
|
-
* - Valid: 8001015009087
|
|
5828
|
-
* - Invalid: 8001015009287, 8001015009086
|
|
5829
5857
|
*
|
|
5830
5858
|
* @see http://en.wikipedia.org/wiki/National_identification_number#South_Africa
|
|
5831
5859
|
* @param {String} value The ID
|
|
@@ -5873,10 +5901,10 @@ if (typeof jQuery === 'undefined') {
|
|
|
5873
5901
|
* @param {Object} options Consists of the following key:
|
|
5874
5902
|
* - field: The name of field that will be used to compare with current one
|
|
5875
5903
|
*/
|
|
5876
|
-
init: function(validator, $field, options) {
|
|
5904
|
+
init: function(validator, $field, options, validatorName) {
|
|
5877
5905
|
var compareWith = validator.getFieldElements(options.field);
|
|
5878
|
-
validator.onLiveChange(compareWith, '
|
|
5879
|
-
var status = validator.getStatus($field,
|
|
5906
|
+
validator.onLiveChange(compareWith, 'live_' + validatorName, function() {
|
|
5907
|
+
var status = validator.getStatus($field, validatorName);
|
|
5880
5908
|
if (status !== validator.STATUS_NOT_VALIDATED) {
|
|
5881
5909
|
validator.revalidateField($field);
|
|
5882
5910
|
}
|
|
@@ -5891,9 +5919,9 @@ if (typeof jQuery === 'undefined') {
|
|
|
5891
5919
|
* @param {Object} options Consists of the following key:
|
|
5892
5920
|
* - field: The name of field that will be used to compare with current one
|
|
5893
5921
|
*/
|
|
5894
|
-
destroy: function(validator, $field, options) {
|
|
5922
|
+
destroy: function(validator, $field, options, validatorName) {
|
|
5895
5923
|
var compareWith = validator.getFieldElements(options.field);
|
|
5896
|
-
validator.offLiveChange(compareWith, '
|
|
5924
|
+
validator.offLiveChange(compareWith, 'live_' + validatorName);
|
|
5897
5925
|
},
|
|
5898
5926
|
|
|
5899
5927
|
/**
|
|
@@ -5905,16 +5933,16 @@ if (typeof jQuery === 'undefined') {
|
|
|
5905
5933
|
* - field: The name of field that will be used to compare with current one
|
|
5906
5934
|
* @returns {Boolean}
|
|
5907
5935
|
*/
|
|
5908
|
-
validate: function(validator, $field, options) {
|
|
5909
|
-
var value = validator.getFieldValue($field,
|
|
5936
|
+
validate: function(validator, $field, options, validatorName) {
|
|
5937
|
+
var value = validator.getFieldValue($field, validatorName),
|
|
5910
5938
|
compareWith = validator.getFieldElements(options.field);
|
|
5911
5939
|
if (compareWith === null || compareWith.length === 0) {
|
|
5912
5940
|
return true;
|
|
5913
5941
|
}
|
|
5914
5942
|
|
|
5915
|
-
var compareValue = validator.getFieldValue(compareWith,
|
|
5943
|
+
var compareValue = validator.getFieldValue(compareWith, validatorName);
|
|
5916
5944
|
if (value === compareValue) {
|
|
5917
|
-
validator.updateStatus(compareWith, validator.STATUS_VALID,
|
|
5945
|
+
validator.updateStatus(compareWith, validator.STATUS_VALID, validatorName);
|
|
5918
5946
|
return true;
|
|
5919
5947
|
}
|
|
5920
5948
|
|
|
@@ -5934,9 +5962,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
5934
5962
|
FormValidation.Validator.imei = {
|
|
5935
5963
|
/**
|
|
5936
5964
|
* Validate IMEI (International Mobile Station Equipment Identity)
|
|
5937
|
-
* Examples:
|
|
5938
|
-
* - Valid: 35-209900-176148-1, 35-209900-176148-23, 3568680000414120, 490154203237518
|
|
5939
|
-
* - Invalid: 490154203237517
|
|
5940
5965
|
*
|
|
5941
5966
|
* @see http://en.wikipedia.org/wiki/International_Mobile_Station_Equipment_Identity
|
|
5942
5967
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
@@ -5945,8 +5970,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
5945
5970
|
* - message: The invalid message
|
|
5946
5971
|
* @returns {Boolean}
|
|
5947
5972
|
*/
|
|
5948
|
-
validate: function(validator, $field, options) {
|
|
5949
|
-
var value = validator.getFieldValue($field,
|
|
5973
|
+
validate: function(validator, $field, options, validatorName) {
|
|
5974
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
5950
5975
|
if (value === '') {
|
|
5951
5976
|
return true;
|
|
5952
5977
|
}
|
|
@@ -5982,9 +6007,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
5982
6007
|
FormValidation.Validator.imo = {
|
|
5983
6008
|
/**
|
|
5984
6009
|
* Validate IMO (International Maritime Organization)
|
|
5985
|
-
* Examples:
|
|
5986
|
-
* - Valid: IMO 8814275, IMO 9176187
|
|
5987
|
-
* - Invalid: IMO 8814274
|
|
5988
6010
|
*
|
|
5989
6011
|
* @see http://en.wikipedia.org/wiki/IMO_Number
|
|
5990
6012
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
@@ -5993,8 +6015,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
5993
6015
|
* - message: The invalid message
|
|
5994
6016
|
* @returns {Boolean}
|
|
5995
6017
|
*/
|
|
5996
|
-
validate: function(validator, $field, options) {
|
|
5997
|
-
var value = validator.getFieldValue($field,
|
|
6018
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6019
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
5998
6020
|
if (value === '') {
|
|
5999
6021
|
return true;
|
|
6000
6022
|
}
|
|
@@ -6002,15 +6024,10 @@ if (typeof jQuery === 'undefined') {
|
|
|
6002
6024
|
if (!/^IMO \d{7}$/i.test(value)) {
|
|
6003
6025
|
return false;
|
|
6004
6026
|
}
|
|
6005
|
-
|
|
6027
|
+
|
|
6006
6028
|
// Grab just the digits
|
|
6007
6029
|
var sum = 0,
|
|
6008
6030
|
digits = value.replace(/^.*(\d{7})$/, '$1');
|
|
6009
|
-
|
|
6010
|
-
// Go over each char, multiplying by the inverse of it's position
|
|
6011
|
-
// IMO 9176187
|
|
6012
|
-
// (9 * 7) + (1 * 6) + (7 * 5) + (6 * 4) + (1 * 3) + (8 * 2) = 147
|
|
6013
|
-
// Take the last digit of that, that's the check digit (7)
|
|
6014
6031
|
for (var i = 6; i >= 1; i--) {
|
|
6015
6032
|
sum += (digits.slice((6 - i), -i) * (i + 1));
|
|
6016
6033
|
}
|
|
@@ -6029,6 +6046,12 @@ if (typeof jQuery === 'undefined') {
|
|
|
6029
6046
|
});
|
|
6030
6047
|
|
|
6031
6048
|
FormValidation.Validator.integer = {
|
|
6049
|
+
html5Attributes: {
|
|
6050
|
+
message: 'message',
|
|
6051
|
+
thousandsseparator: 'thousandsSeparator',
|
|
6052
|
+
decimalseparator: 'decimalSeparator'
|
|
6053
|
+
},
|
|
6054
|
+
|
|
6032
6055
|
enableByHtml5: function($field) {
|
|
6033
6056
|
return ('number' === $field.attr('type')) && ($field.attr('step') === undefined || $field.attr('step') % 1 === 0);
|
|
6034
6057
|
},
|
|
@@ -6040,18 +6063,47 @@ if (typeof jQuery === 'undefined') {
|
|
|
6040
6063
|
* @param {jQuery} $field Field element
|
|
6041
6064
|
* @param {Object} options Can consist of the following key:
|
|
6042
6065
|
* - message: The invalid message
|
|
6066
|
+
* - thousandsSeparator: The thousands separator. It's empty by default
|
|
6067
|
+
* - decimalSeparator: The decimal separator. It's '.' by default
|
|
6043
6068
|
* @returns {Boolean}
|
|
6044
6069
|
*/
|
|
6045
|
-
validate: function(validator, $field, options) {
|
|
6070
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6046
6071
|
if (this.enableByHtml5($field) && $field.get(0).validity && $field.get(0).validity.badInput === true) {
|
|
6047
6072
|
return false;
|
|
6048
6073
|
}
|
|
6049
6074
|
|
|
6050
|
-
var value = validator.getFieldValue($field,
|
|
6075
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
6051
6076
|
if (value === '') {
|
|
6052
6077
|
return true;
|
|
6053
6078
|
}
|
|
6054
|
-
|
|
6079
|
+
|
|
6080
|
+
var decimalSeparator = options.decimalSeparator || '.',
|
|
6081
|
+
thousandsSeparator = options.thousandsSeparator || '';
|
|
6082
|
+
decimalSeparator = (decimalSeparator === '.') ? '\\.' : decimalSeparator;
|
|
6083
|
+
thousandsSeparator = (thousandsSeparator === '.') ? '\\.' : thousandsSeparator;
|
|
6084
|
+
|
|
6085
|
+
var testRegexp = new RegExp('^-?[0-9]{1,3}(' + thousandsSeparator + '[0-9]{3})*(' + decimalSeparator + '[0-9]+)?$'),
|
|
6086
|
+
thousandsReplacer = new RegExp(thousandsSeparator, 'g');
|
|
6087
|
+
|
|
6088
|
+
if (!testRegexp.test(value)) {
|
|
6089
|
+
return false;
|
|
6090
|
+
}
|
|
6091
|
+
|
|
6092
|
+
// Replace thousands separator with blank
|
|
6093
|
+
if (thousandsSeparator) {
|
|
6094
|
+
value = value.replace(thousandsReplacer, '');
|
|
6095
|
+
}
|
|
6096
|
+
// Replace decimal separator with a dot
|
|
6097
|
+
if (decimalSeparator) {
|
|
6098
|
+
value = value.replace(decimalSeparator, '.');
|
|
6099
|
+
}
|
|
6100
|
+
|
|
6101
|
+
if (isNaN(value) || !isFinite(value)) {
|
|
6102
|
+
return false;
|
|
6103
|
+
}
|
|
6104
|
+
// TODO: Use Number.isInteger() if available
|
|
6105
|
+
value = parseFloat(value);
|
|
6106
|
+
return Math.floor(value) === value;
|
|
6055
6107
|
}
|
|
6056
6108
|
};
|
|
6057
6109
|
}(jQuery));
|
|
@@ -6084,8 +6136,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
6084
6136
|
* - message: The invalid message
|
|
6085
6137
|
* @returns {Boolean|Object}
|
|
6086
6138
|
*/
|
|
6087
|
-
validate: function(validator, $field, options) {
|
|
6088
|
-
var value = validator.getFieldValue($field,
|
|
6139
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6140
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
6089
6141
|
if (value === '') {
|
|
6090
6142
|
return true;
|
|
6091
6143
|
}
|
|
@@ -6135,23 +6187,16 @@ if (typeof jQuery === 'undefined') {
|
|
|
6135
6187
|
FormValidation.Validator.isbn = {
|
|
6136
6188
|
/**
|
|
6137
6189
|
* Return true if the input value is a valid ISBN 10 or ISBN 13 number
|
|
6138
|
-
* Examples:
|
|
6139
|
-
* - Valid:
|
|
6140
|
-
* ISBN 10: 99921-58-10-7, 9971-5-0210-0, 960-425-059-0, 80-902734-1-6, 85-359-0277-5, 1-84356-028-3, 0-684-84328-5, 0-8044-2957-X, 0-85131-041-9, 0-943396-04-2, 0-9752298-0-X
|
|
6141
|
-
* ISBN 13: 978-0-306-40615-7
|
|
6142
|
-
* - Invalid:
|
|
6143
|
-
* ISBN 10: 99921-58-10-6
|
|
6144
|
-
* ISBN 13: 978-0-306-40615-6
|
|
6145
6190
|
*
|
|
6146
6191
|
* @see http://en.wikipedia.org/wiki/International_Standard_Book_Number
|
|
6147
6192
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
6148
6193
|
* @param {jQuery} $field Field element
|
|
6149
6194
|
* @param {Object} [options] Can consist of the following keys:
|
|
6150
6195
|
* - message: The invalid message
|
|
6151
|
-
* @returns {Boolean}
|
|
6196
|
+
* @returns {Boolean|Object}
|
|
6152
6197
|
*/
|
|
6153
|
-
validate: function(validator, $field, options) {
|
|
6154
|
-
var value = validator.getFieldValue($field,
|
|
6198
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6199
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
6155
6200
|
if (value === '') {
|
|
6156
6201
|
return true;
|
|
6157
6202
|
}
|
|
@@ -6194,7 +6239,10 @@ if (typeof jQuery === 'undefined') {
|
|
|
6194
6239
|
} else if (checksum === 10) {
|
|
6195
6240
|
checksum = 'X';
|
|
6196
6241
|
}
|
|
6197
|
-
return
|
|
6242
|
+
return {
|
|
6243
|
+
type: type,
|
|
6244
|
+
valid: (checksum + '' === chars[length - 1])
|
|
6245
|
+
};
|
|
6198
6246
|
|
|
6199
6247
|
case 'ISBN13':
|
|
6200
6248
|
sum = 0;
|
|
@@ -6205,7 +6253,10 @@ if (typeof jQuery === 'undefined') {
|
|
|
6205
6253
|
if (checksum === 10) {
|
|
6206
6254
|
checksum = '0';
|
|
6207
6255
|
}
|
|
6208
|
-
return
|
|
6256
|
+
return {
|
|
6257
|
+
type: type,
|
|
6258
|
+
valid: (checksum + '' === chars[length - 1])
|
|
6259
|
+
};
|
|
6209
6260
|
|
|
6210
6261
|
default:
|
|
6211
6262
|
return false;
|
|
@@ -6229,9 +6280,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
6229
6280
|
|
|
6230
6281
|
/**
|
|
6231
6282
|
* Validate an ISIN (International Securities Identification Number)
|
|
6232
|
-
* Examples:
|
|
6233
|
-
* - Valid: US0378331005, AU0000XVGZA3, GB0002634946
|
|
6234
|
-
* - Invalid: US0378331004, AA0000XVGZA3
|
|
6235
6283
|
*
|
|
6236
6284
|
* @see http://en.wikipedia.org/wiki/International_Securities_Identifying_Number
|
|
6237
6285
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
@@ -6240,8 +6288,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
6240
6288
|
* - message: The invalid message
|
|
6241
6289
|
* @returns {Boolean}
|
|
6242
6290
|
*/
|
|
6243
|
-
validate: function(validator, $field, options) {
|
|
6244
|
-
var value = validator.getFieldValue($field,
|
|
6291
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6292
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
6245
6293
|
if (value === '') {
|
|
6246
6294
|
return true;
|
|
6247
6295
|
}
|
|
@@ -6288,19 +6336,16 @@ if (typeof jQuery === 'undefined') {
|
|
|
6288
6336
|
FormValidation.Validator.ismn = {
|
|
6289
6337
|
/**
|
|
6290
6338
|
* Validate ISMN (International Standard Music Number)
|
|
6291
|
-
* Examples:
|
|
6292
|
-
* - Valid: M230671187, 979-0-0601-1561-5, 979 0 3452 4680 5, 9790060115615
|
|
6293
|
-
* - Invalid: 9790060115614
|
|
6294
6339
|
*
|
|
6295
6340
|
* @see http://en.wikipedia.org/wiki/International_Standard_Music_Number
|
|
6296
6341
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
6297
6342
|
* @param {jQuery} $field Field element
|
|
6298
6343
|
* @param {Object} options Can consist of the following keys:
|
|
6299
6344
|
* - message: The invalid message
|
|
6300
|
-
* @returns {Boolean}
|
|
6345
|
+
* @returns {Boolean|Object}
|
|
6301
6346
|
*/
|
|
6302
|
-
validate: function(validator, $field, options) {
|
|
6303
|
-
var value = validator.getFieldValue($field,
|
|
6347
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6348
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
6304
6349
|
if (value === '') {
|
|
6305
6350
|
return true;
|
|
6306
6351
|
}
|
|
@@ -6335,7 +6380,10 @@ if (typeof jQuery === 'undefined') {
|
|
|
6335
6380
|
sum += parseInt(value.charAt(i), 10) * weight[i % 2];
|
|
6336
6381
|
}
|
|
6337
6382
|
sum = 10 - sum % 10;
|
|
6338
|
-
return
|
|
6383
|
+
return {
|
|
6384
|
+
type: type,
|
|
6385
|
+
valid: (sum + '' === value.charAt(length - 1))
|
|
6386
|
+
};
|
|
6339
6387
|
}
|
|
6340
6388
|
};
|
|
6341
6389
|
}(jQuery));
|
|
@@ -6351,9 +6399,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
6351
6399
|
FormValidation.Validator.issn = {
|
|
6352
6400
|
/**
|
|
6353
6401
|
* Validate ISSN (International Standard Serial Number)
|
|
6354
|
-
* Examples:
|
|
6355
|
-
* - Valid: 0378-5955, 0024-9319, 0032-1478
|
|
6356
|
-
* - Invalid: 0032-147X
|
|
6357
6402
|
*
|
|
6358
6403
|
* @see http://en.wikipedia.org/wiki/International_Standard_Serial_Number
|
|
6359
6404
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
@@ -6362,8 +6407,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
6362
6407
|
* - message: The invalid message
|
|
6363
6408
|
* @returns {Boolean}
|
|
6364
6409
|
*/
|
|
6365
|
-
validate: function(validator, $field, options) {
|
|
6366
|
-
var value = validator.getFieldValue($field,
|
|
6410
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6411
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
6367
6412
|
if (value === '') {
|
|
6368
6413
|
return true;
|
|
6369
6414
|
}
|
|
@@ -6434,29 +6479,25 @@ if (typeof jQuery === 'undefined') {
|
|
|
6434
6479
|
* - message: The invalid message
|
|
6435
6480
|
* @returns {Boolean|Object}
|
|
6436
6481
|
*/
|
|
6437
|
-
validate: function(validator, $field, options) {
|
|
6438
|
-
var value = validator.getFieldValue($field,
|
|
6482
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6483
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
6439
6484
|
if (value === '') {
|
|
6440
6485
|
return true;
|
|
6441
6486
|
}
|
|
6442
|
-
|
|
6487
|
+
|
|
6443
6488
|
value = this._format(value);
|
|
6444
|
-
if (!$.isNumeric(value)) {
|
|
6445
|
-
return false;
|
|
6446
|
-
}
|
|
6447
6489
|
|
|
6448
6490
|
var locale = validator.getLocale(),
|
|
6449
6491
|
compareTo = $.isNumeric(options.value) ? options.value : validator.getDynamicOption($field, options.value),
|
|
6450
6492
|
compareToValue = this._format(compareTo);
|
|
6451
6493
|
|
|
6452
|
-
value = parseFloat(value);
|
|
6453
6494
|
return (options.inclusive === true || options.inclusive === undefined)
|
|
6454
6495
|
? {
|
|
6455
|
-
valid: value <= compareToValue,
|
|
6496
|
+
valid: $.isNumeric(value) && parseFloat(value) <= compareToValue,
|
|
6456
6497
|
message: FormValidation.Helper.format(options.message || FormValidation.I18n[locale].lessThan['default'], compareTo)
|
|
6457
6498
|
}
|
|
6458
6499
|
: {
|
|
6459
|
-
valid: value < compareToValue,
|
|
6500
|
+
valid: $.isNumeric(value) && parseFloat(value) < compareToValue,
|
|
6460
6501
|
message: FormValidation.Helper.format(options.message || FormValidation.I18n[locale].lessThan.notInclusive, compareTo)
|
|
6461
6502
|
};
|
|
6462
6503
|
},
|
|
@@ -6485,8 +6526,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
6485
6526
|
* - message: The invalid message
|
|
6486
6527
|
* @returns {Boolean}
|
|
6487
6528
|
*/
|
|
6488
|
-
validate: function(validator, $field, options) {
|
|
6489
|
-
var value = validator.getFieldValue($field,
|
|
6529
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6530
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
6490
6531
|
if (value === '') {
|
|
6491
6532
|
return true;
|
|
6492
6533
|
}
|
|
@@ -6507,9 +6548,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
6507
6548
|
FormValidation.Validator.meid = {
|
|
6508
6549
|
/**
|
|
6509
6550
|
* Validate MEID (Mobile Equipment Identifier)
|
|
6510
|
-
* Examples:
|
|
6511
|
-
* - Valid: 293608736500703710, 29360-87365-0070-3710, AF0123450ABCDE, AF-012345-0ABCDE
|
|
6512
|
-
* - Invalid: 2936087365007037101
|
|
6513
6551
|
*
|
|
6514
6552
|
* @see http://en.wikipedia.org/wiki/Mobile_equipment_identifier
|
|
6515
6553
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
@@ -6518,8 +6556,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
6518
6556
|
* - message: The invalid message
|
|
6519
6557
|
* @returns {Boolean}
|
|
6520
6558
|
*/
|
|
6521
|
-
validate: function(validator, $field, options) {
|
|
6522
|
-
var value = validator.getFieldValue($field,
|
|
6559
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6560
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
6523
6561
|
if (value === '') {
|
|
6524
6562
|
return true;
|
|
6525
6563
|
}
|
|
@@ -6605,7 +6643,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
6605
6643
|
* @param {Object} options
|
|
6606
6644
|
* @returns {Boolean}
|
|
6607
6645
|
*/
|
|
6608
|
-
validate: function(validator, $field, options) {
|
|
6646
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6609
6647
|
var type = $field.attr('type');
|
|
6610
6648
|
if ('radio' === type || 'checkbox' === type) {
|
|
6611
6649
|
var ns = validator.getNamespace();
|
|
@@ -6619,7 +6657,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
6619
6657
|
return true;
|
|
6620
6658
|
}
|
|
6621
6659
|
|
|
6622
|
-
var value = validator.getFieldValue($field,
|
|
6660
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
6623
6661
|
return $.trim(value) !== '';
|
|
6624
6662
|
}
|
|
6625
6663
|
};
|
|
@@ -6636,7 +6674,9 @@ if (typeof jQuery === 'undefined') {
|
|
|
6636
6674
|
FormValidation.Validator.numeric = {
|
|
6637
6675
|
html5Attributes: {
|
|
6638
6676
|
message: 'message',
|
|
6639
|
-
separator: 'separator'
|
|
6677
|
+
separator: 'separator', // deprecated
|
|
6678
|
+
thousandsseparator: 'thousandsSeparator',
|
|
6679
|
+
decimalseparator: 'decimalSeparator'
|
|
6640
6680
|
},
|
|
6641
6681
|
|
|
6642
6682
|
enableByHtml5: function($field) {
|
|
@@ -6650,21 +6690,39 @@ if (typeof jQuery === 'undefined') {
|
|
|
6650
6690
|
* @param {jQuery} $field Field element
|
|
6651
6691
|
* @param {Object} options Consist of key:
|
|
6652
6692
|
* - message: The invalid message
|
|
6653
|
-
* -
|
|
6693
|
+
* - thousandsSeparator: The thousands separator. It's empty by default
|
|
6694
|
+
* - separator, decimalSeparator: The decimal separator. It's '.' by default
|
|
6695
|
+
* The separator option is deprecated and should be replaced with decimalSeparator
|
|
6654
6696
|
* @returns {Boolean}
|
|
6655
6697
|
*/
|
|
6656
|
-
validate: function(validator, $field, options) {
|
|
6698
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6657
6699
|
if (this.enableByHtml5($field) && $field.get(0).validity && $field.get(0).validity.badInput === true) {
|
|
6658
6700
|
return false;
|
|
6659
6701
|
}
|
|
6660
6702
|
|
|
6661
|
-
var value = validator.getFieldValue($field,
|
|
6703
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
6662
6704
|
if (value === '') {
|
|
6663
6705
|
return true;
|
|
6664
6706
|
}
|
|
6665
|
-
var
|
|
6666
|
-
|
|
6667
|
-
|
|
6707
|
+
var decimalSeparator = options.separator || options.decimalSeparator || '.',
|
|
6708
|
+
thousandsSeparator = options.thousandsSeparator || '';
|
|
6709
|
+
decimalSeparator = (decimalSeparator === '.') ? '\\.' : decimalSeparator;
|
|
6710
|
+
thousandsSeparator = (thousandsSeparator === '.') ? '\\.' : thousandsSeparator;
|
|
6711
|
+
|
|
6712
|
+
var testRegexp = new RegExp('^-?[0-9]{1,3}(' + thousandsSeparator + '[0-9]{3})*(' + decimalSeparator + '[0-9]+)?$'),
|
|
6713
|
+
thousandsReplacer = new RegExp(thousandsSeparator, 'g');
|
|
6714
|
+
|
|
6715
|
+
if (!testRegexp.test(value)) {
|
|
6716
|
+
return false;
|
|
6717
|
+
}
|
|
6718
|
+
|
|
6719
|
+
// Replace thousands separator with blank
|
|
6720
|
+
if (thousandsSeparator) {
|
|
6721
|
+
value = value.replace(thousandsReplacer, '');
|
|
6722
|
+
}
|
|
6723
|
+
// Replace decimal separator with a dot
|
|
6724
|
+
if (decimalSeparator) {
|
|
6725
|
+
value = value.replace(decimalSeparator, '.');
|
|
6668
6726
|
}
|
|
6669
6727
|
|
|
6670
6728
|
return !isNaN(parseFloat(value)) && isFinite(value);
|
|
@@ -6728,8 +6786,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
6728
6786
|
*
|
|
6729
6787
|
* @returns {Boolean|Object}
|
|
6730
6788
|
*/
|
|
6731
|
-
validate: function(validator, $field, options) {
|
|
6732
|
-
var value = validator.getFieldValue($field,
|
|
6789
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6790
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
6733
6791
|
if (value === '') {
|
|
6734
6792
|
return true;
|
|
6735
6793
|
}
|
|
@@ -6752,7 +6810,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
6752
6810
|
value = $.trim(value);
|
|
6753
6811
|
isValid = (/^(((\+|00)?971[\s\.-]?(\(0\)[\s\.-]?)?|0)(\(5(0|2|5|6)\)|5(0|2|5|6)|2|3|4|6|7|9)|60)([\s\.-]?[0-9]){7}$/).test(value);
|
|
6754
6812
|
break;
|
|
6755
|
-
|
|
6813
|
+
|
|
6756
6814
|
case 'BG':
|
|
6757
6815
|
// https://regex101.com/r/yE6vN4/1
|
|
6758
6816
|
// See http://en.wikipedia.org/wiki/Telephone_numbers_in_Bulgaria
|
|
@@ -6817,7 +6875,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
6817
6875
|
value = $.trim(value);
|
|
6818
6876
|
isValid = (/^\(?(?:(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?\(?(?:0\)?[\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}|8(?:00[\s-]?11[\s-]?11|45[\s-]?46[\s-]?4\d))(?:(?:[\s-]?(?:x|ext\.?\s?|\#)\d+)?)$/).test(value);
|
|
6819
6877
|
break;
|
|
6820
|
-
|
|
6878
|
+
|
|
6821
6879
|
case 'IN':
|
|
6822
6880
|
// http://stackoverflow.com/questions/18351553/regular-expression-validation-for-indian-phone-number-and-mobile-number
|
|
6823
6881
|
// http://regex101.com/r/qL6eZ5/1
|
|
@@ -6825,21 +6883,21 @@ if (typeof jQuery === 'undefined') {
|
|
|
6825
6883
|
value = $.trim(value);
|
|
6826
6884
|
isValid = (/((\+?)((0[ -]+)*|(91 )*)(\d{12}|\d{10}))|\d{5}([- ]*)\d{6}/).test(value);
|
|
6827
6885
|
break;
|
|
6828
|
-
|
|
6886
|
+
|
|
6829
6887
|
case 'MA':
|
|
6830
6888
|
// http://en.wikipedia.org/wiki/Telephone_numbers_in_Morocco
|
|
6831
6889
|
// http://regexr.com/399n8
|
|
6832
6890
|
value = $.trim(value);
|
|
6833
6891
|
isValid = (/^(?:(?:(?:\+|00)212[\s]?(?:[\s]?\(0\)[\s]?)?)|0){1}(?:5[\s.-]?[2-3]|6[\s.-]?[13-9]){1}[0-9]{1}(?:[\s.-]?\d{2}){3}$/).test(value);
|
|
6834
6892
|
break;
|
|
6835
|
-
|
|
6893
|
+
|
|
6836
6894
|
case 'NL':
|
|
6837
6895
|
// http://en.wikipedia.org/wiki/Telephone_numbers_in_the_Netherlands
|
|
6838
6896
|
// http://regexr.com/3aevr
|
|
6839
6897
|
value = $.trim(value);
|
|
6840
6898
|
isValid = (/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9])((\s|\s?-\s?)?[0-9])((\s|\s?-\s?)?[0-9])\s?[0-9]\s?[0-9]\s?[0-9]\s?[0-9]\s?[0-9]$/gm).test(value);
|
|
6841
6899
|
break;
|
|
6842
|
-
|
|
6900
|
+
|
|
6843
6901
|
case 'PK':
|
|
6844
6902
|
// http://regex101.com/r/yH8aV9/2
|
|
6845
6903
|
value = $.trim(value);
|
|
@@ -6872,7 +6930,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
6872
6930
|
value = $.trim(value);
|
|
6873
6931
|
isValid = (/^0(?:2(?:12|4[0-9]|5[1-9]|6[0-9]|7[0-8]|8[1-35-8]|9[1-5]|3[45789])|4(?:1[246]|2[46]))\d{7}$/).test(value);
|
|
6874
6932
|
break;
|
|
6875
|
-
|
|
6933
|
+
|
|
6876
6934
|
case 'US':
|
|
6877
6935
|
/* falls through */
|
|
6878
6936
|
default:
|
|
@@ -6891,6 +6949,74 @@ if (typeof jQuery === 'undefined') {
|
|
|
6891
6949
|
}
|
|
6892
6950
|
};
|
|
6893
6951
|
}(jQuery));
|
|
6952
|
+
;(function($) {
|
|
6953
|
+
FormValidation.I18n = $.extend(true, FormValidation.I18n || {}, {
|
|
6954
|
+
'en_US': {
|
|
6955
|
+
promise: {
|
|
6956
|
+
'default': 'Please enter a valid value'
|
|
6957
|
+
}
|
|
6958
|
+
}
|
|
6959
|
+
});
|
|
6960
|
+
|
|
6961
|
+
FormValidation.Validator.promise = {
|
|
6962
|
+
html5Attributes: {
|
|
6963
|
+
message: 'message',
|
|
6964
|
+
promise: 'promise'
|
|
6965
|
+
},
|
|
6966
|
+
|
|
6967
|
+
/**
|
|
6968
|
+
* Return result from a jQuery's Deferred object
|
|
6969
|
+
*
|
|
6970
|
+
* @param {FormValidation.Base} validator The validator plugin instance
|
|
6971
|
+
* @param {jQuery} $field Field element
|
|
6972
|
+
* @param {Object} options Can consist of the following keys:
|
|
6973
|
+
* - promise: The method that passes parameters:
|
|
6974
|
+
* promise: function(fieldValue, validator, $field) {
|
|
6975
|
+
* // fieldValue is the value of field
|
|
6976
|
+
* // validator is instance of FormValidation.Base
|
|
6977
|
+
* // $field is the field element
|
|
6978
|
+
*
|
|
6979
|
+
* var dfd = new $.Deferred();
|
|
6980
|
+
*
|
|
6981
|
+
* // Do something ...
|
|
6982
|
+
*
|
|
6983
|
+
* // Resolve when particular task is done
|
|
6984
|
+
* dfd.resolve({
|
|
6985
|
+
* valid: true or false, // Required
|
|
6986
|
+
* message: 'Other message', // Optional
|
|
6987
|
+
* key: value // You can attach more data to reuse later
|
|
6988
|
+
* });
|
|
6989
|
+
*
|
|
6990
|
+
* // You can reject if there's error
|
|
6991
|
+
* dfd.reject({
|
|
6992
|
+
* message: 'Other message', // Optional
|
|
6993
|
+
* key: value // You can attach more data to reuse later
|
|
6994
|
+
* });
|
|
6995
|
+
*
|
|
6996
|
+
* return dfd.promise();
|
|
6997
|
+
* }
|
|
6998
|
+
* - message: The invalid message
|
|
6999
|
+
* @returns {Deferred}
|
|
7000
|
+
*/
|
|
7001
|
+
validate: function(validator, $field, options, validatorName) {
|
|
7002
|
+
var value = validator.getFieldValue($field, validatorName),
|
|
7003
|
+
dfd = new $.Deferred(),
|
|
7004
|
+
promise = FormValidation.Helper.call(options.promise, [value, validator, $field]);
|
|
7005
|
+
|
|
7006
|
+
promise
|
|
7007
|
+
.done(function(result) {
|
|
7008
|
+
dfd.resolve($field, validatorName, result);
|
|
7009
|
+
})
|
|
7010
|
+
.fail(function(result) {
|
|
7011
|
+
result = result || {};
|
|
7012
|
+
result.valid = false;
|
|
7013
|
+
dfd.resolve($field, validatorName, result);
|
|
7014
|
+
});
|
|
7015
|
+
|
|
7016
|
+
return dfd;
|
|
7017
|
+
}
|
|
7018
|
+
};
|
|
7019
|
+
}(jQuery));
|
|
6894
7020
|
;(function($) {
|
|
6895
7021
|
FormValidation.I18n = $.extend(true, FormValidation.I18n || {}, {
|
|
6896
7022
|
'en_US': {
|
|
@@ -6926,8 +7052,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
6926
7052
|
* - regexp: The regular expression you need to check
|
|
6927
7053
|
* @returns {Boolean}
|
|
6928
7054
|
*/
|
|
6929
|
-
validate: function(validator, $field, options) {
|
|
6930
|
-
var value = validator.getFieldValue($field,
|
|
7055
|
+
validate: function(validator, $field, options, validatorName) {
|
|
7056
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
6931
7057
|
if (value === '') {
|
|
6932
7058
|
return true;
|
|
6933
7059
|
}
|
|
@@ -6962,12 +7088,12 @@ if (typeof jQuery === 'undefined') {
|
|
|
6962
7088
|
/**
|
|
6963
7089
|
* Destroy the timer when destroying the FormValidation (using validator.destroy() method)
|
|
6964
7090
|
*/
|
|
6965
|
-
destroy: function(validator, $field, options) {
|
|
7091
|
+
destroy: function(validator, $field, options, validatorName) {
|
|
6966
7092
|
var ns = validator.getNamespace(),
|
|
6967
|
-
timer = $field.data(ns + '.
|
|
7093
|
+
timer = $field.data(ns + '.' + validatorName + '.timer');
|
|
6968
7094
|
if (timer) {
|
|
6969
7095
|
clearTimeout(timer);
|
|
6970
|
-
$field.removeData(ns + '.
|
|
7096
|
+
$field.removeData(ns + '.' + validatorName + '.timer');
|
|
6971
7097
|
}
|
|
6972
7098
|
},
|
|
6973
7099
|
|
|
@@ -6994,12 +7120,12 @@ if (typeof jQuery === 'undefined') {
|
|
|
6994
7120
|
* This is useful when connecting to external remote server or APIs provided by 3rd parties
|
|
6995
7121
|
* @returns {Deferred}
|
|
6996
7122
|
*/
|
|
6997
|
-
validate: function(validator, $field, options) {
|
|
7123
|
+
validate: function(validator, $field, options, validatorName) {
|
|
6998
7124
|
var ns = validator.getNamespace(),
|
|
6999
|
-
value = validator.getFieldValue($field,
|
|
7125
|
+
value = validator.getFieldValue($field, validatorName),
|
|
7000
7126
|
dfd = new $.Deferred();
|
|
7001
7127
|
if (value === '') {
|
|
7002
|
-
dfd.resolve($field,
|
|
7128
|
+
dfd.resolve($field, validatorName, { valid: true });
|
|
7003
7129
|
return dfd;
|
|
7004
7130
|
}
|
|
7005
7131
|
var name = $field.attr('data-' + ns + '-field'),
|
|
@@ -7009,7 +7135,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
7009
7135
|
|
|
7010
7136
|
// Support dynamic data
|
|
7011
7137
|
if ('function' === typeof data) {
|
|
7012
|
-
data = data.call(this, validator);
|
|
7138
|
+
data = data.call(this, validator, $field, value);
|
|
7013
7139
|
}
|
|
7014
7140
|
|
|
7015
7141
|
// Parse string data from HTML5 attribute
|
|
@@ -7019,7 +7145,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
7019
7145
|
|
|
7020
7146
|
// Support dynamic url
|
|
7021
7147
|
if ('function' === typeof url) {
|
|
7022
|
-
url = url.call(this, validator);
|
|
7148
|
+
url = url.call(this, validator, $field, value);
|
|
7023
7149
|
}
|
|
7024
7150
|
|
|
7025
7151
|
data[options.name || name] = value;
|
|
@@ -7043,10 +7169,10 @@ if (typeof jQuery === 'undefined') {
|
|
|
7043
7169
|
response.valid = (response[validKey] === true || response[validKey] === 'true')
|
|
7044
7170
|
? true
|
|
7045
7171
|
: (response[validKey] === false || response[validKey] === 'false' ? false : null);
|
|
7046
|
-
dfd.resolve($field,
|
|
7172
|
+
dfd.resolve($field, validatorName, response);
|
|
7047
7173
|
})
|
|
7048
7174
|
.error(function(response) {
|
|
7049
|
-
dfd.resolve($field,
|
|
7175
|
+
dfd.resolve($field, validatorName, {
|
|
7050
7176
|
valid: false
|
|
7051
7177
|
});
|
|
7052
7178
|
});
|
|
@@ -7057,15 +7183,15 @@ if (typeof jQuery === 'undefined') {
|
|
|
7057
7183
|
|
|
7058
7184
|
return dfd;
|
|
7059
7185
|
}
|
|
7060
|
-
|
|
7186
|
+
|
|
7061
7187
|
if (options.delay) {
|
|
7062
7188
|
// Since the form might have multiple fields with the same name
|
|
7063
7189
|
// I have to attach the timer to the field element
|
|
7064
|
-
if ($field.data(ns + '.
|
|
7065
|
-
clearTimeout($field.data(ns + '.
|
|
7190
|
+
if ($field.data(ns + '.' + validatorName + '.timer')) {
|
|
7191
|
+
clearTimeout($field.data(ns + '.' + validatorName + '.timer'));
|
|
7066
7192
|
}
|
|
7067
7193
|
|
|
7068
|
-
$field.data(ns + '.
|
|
7194
|
+
$field.data(ns + '.' + validatorName + '.timer', setTimeout(runCallback, options.delay));
|
|
7069
7195
|
return dfd;
|
|
7070
7196
|
} else {
|
|
7071
7197
|
return runCallback();
|
|
@@ -7085,8 +7211,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
7085
7211
|
FormValidation.Validator.rtn = {
|
|
7086
7212
|
/**
|
|
7087
7213
|
* Validate a RTN (Routing transit number)
|
|
7088
|
-
* Examples:
|
|
7089
|
-
* - Valid: 021200025, 789456124
|
|
7090
7214
|
*
|
|
7091
7215
|
* @see http://en.wikipedia.org/wiki/Routing_transit_number
|
|
7092
7216
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
@@ -7095,8 +7219,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
7095
7219
|
* - message: The invalid message
|
|
7096
7220
|
* @returns {Boolean}
|
|
7097
7221
|
*/
|
|
7098
|
-
validate: function(validator, $field, options) {
|
|
7099
|
-
var value = validator.getFieldValue($field,
|
|
7222
|
+
validate: function(validator, $field, options, validatorName) {
|
|
7223
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
7100
7224
|
if (value === '') {
|
|
7101
7225
|
return true;
|
|
7102
7226
|
}
|
|
@@ -7127,8 +7251,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
7127
7251
|
FormValidation.Validator.sedol = {
|
|
7128
7252
|
/**
|
|
7129
7253
|
* Validate a SEDOL (Stock Exchange Daily Official List)
|
|
7130
|
-
* Examples:
|
|
7131
|
-
* - Valid: 0263494, B0WNLY7
|
|
7132
7254
|
*
|
|
7133
7255
|
* @see http://en.wikipedia.org/wiki/SEDOL
|
|
7134
7256
|
* @param {FormValidation.Base} validator The validator plugin instance
|
|
@@ -7137,8 +7259,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
7137
7259
|
* - message: The invalid message
|
|
7138
7260
|
* @returns {Boolean}
|
|
7139
7261
|
*/
|
|
7140
|
-
validate: function(validator, $field, options) {
|
|
7141
|
-
var value = validator.getFieldValue($field,
|
|
7262
|
+
validate: function(validator, $field, options, validatorName) {
|
|
7263
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
7142
7264
|
if (value === '') {
|
|
7143
7265
|
return true;
|
|
7144
7266
|
}
|
|
@@ -7178,8 +7300,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
7178
7300
|
* - message: The invalid message
|
|
7179
7301
|
* @returns {Boolean}
|
|
7180
7302
|
*/
|
|
7181
|
-
validate: function(validator, $field, options) {
|
|
7182
|
-
var value = validator.getFieldValue($field,
|
|
7303
|
+
validate: function(validator, $field, options, validatorName) {
|
|
7304
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
7183
7305
|
if (value === '') {
|
|
7184
7306
|
return true;
|
|
7185
7307
|
}
|
|
@@ -7210,8 +7332,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
7210
7332
|
* - message: The invalid message
|
|
7211
7333
|
* @returns {Boolean}
|
|
7212
7334
|
*/
|
|
7213
|
-
validate: function(validator, $field, options) {
|
|
7214
|
-
var value = validator.getFieldValue($field,
|
|
7335
|
+
validate: function(validator, $field, options, validatorName) {
|
|
7336
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
7215
7337
|
if (value === '') {
|
|
7216
7338
|
return true;
|
|
7217
7339
|
}
|
|
@@ -7260,8 +7382,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
7260
7382
|
* - message: The invalid message
|
|
7261
7383
|
* @returns {Boolean|Object}
|
|
7262
7384
|
*/
|
|
7263
|
-
validate: function(validator, $field, options) {
|
|
7264
|
-
var value = validator.getFieldValue($field,
|
|
7385
|
+
validate: function(validator, $field, options, validatorName) {
|
|
7386
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
7265
7387
|
if (value === '') {
|
|
7266
7388
|
return true;
|
|
7267
7389
|
}
|
|
@@ -7328,8 +7450,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
7328
7450
|
* - case: Can be 'lower' (default) or 'upper'
|
|
7329
7451
|
* @returns {Object}
|
|
7330
7452
|
*/
|
|
7331
|
-
validate: function(validator, $field, options) {
|
|
7332
|
-
var value = validator.getFieldValue($field,
|
|
7453
|
+
validate: function(validator, $field, options, validatorName) {
|
|
7454
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
7333
7455
|
if (value === '') {
|
|
7334
7456
|
return true;
|
|
7335
7457
|
}
|
|
@@ -7398,8 +7520,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
7398
7520
|
* - utf8bytes: Evaluate string length in UTF-8 bytes, default to false
|
|
7399
7521
|
* @returns {Object}
|
|
7400
7522
|
*/
|
|
7401
|
-
validate: function(validator, $field, options) {
|
|
7402
|
-
var value = validator.getFieldValue($field,
|
|
7523
|
+
validate: function(validator, $field, options, validatorName) {
|
|
7524
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
7403
7525
|
if (options.trim === true || options.trim === 'true') {
|
|
7404
7526
|
value = $.trim(value);
|
|
7405
7527
|
}
|
|
@@ -7441,11 +7563,11 @@ if (typeof jQuery === 'undefined') {
|
|
|
7441
7563
|
break;
|
|
7442
7564
|
|
|
7443
7565
|
case (!!min):
|
|
7444
|
-
message = FormValidation.Helper.format(options.message || FormValidation.I18n[locale].stringLength.more, parseInt(min, 10));
|
|
7566
|
+
message = FormValidation.Helper.format(options.message || FormValidation.I18n[locale].stringLength.more, parseInt(min, 10) - 1);
|
|
7445
7567
|
break;
|
|
7446
7568
|
|
|
7447
7569
|
case (!!max):
|
|
7448
|
-
message = FormValidation.Helper.format(options.message || FormValidation.I18n[locale].stringLength.less, parseInt(max, 10));
|
|
7570
|
+
message = FormValidation.Helper.format(options.message || FormValidation.I18n[locale].stringLength.less, parseInt(max, 10) + 1);
|
|
7449
7571
|
break;
|
|
7450
7572
|
|
|
7451
7573
|
default:
|
|
@@ -7492,8 +7614,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
7492
7614
|
* - protocol: The protocols, separated by a comma. Default to "http, https, ftp"
|
|
7493
7615
|
* @returns {Boolean}
|
|
7494
7616
|
*/
|
|
7495
|
-
validate: function(validator, $field, options) {
|
|
7496
|
-
var value = validator.getFieldValue($field,
|
|
7617
|
+
validate: function(validator, $field, options, validatorName) {
|
|
7618
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
7497
7619
|
if (value === '') {
|
|
7498
7620
|
return true;
|
|
7499
7621
|
}
|
|
@@ -7606,8 +7728,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
7606
7728
|
* - version: Can be 3, 4, 5, null
|
|
7607
7729
|
* @returns {Boolean|Object}
|
|
7608
7730
|
*/
|
|
7609
|
-
validate: function(validator, $field, options) {
|
|
7610
|
-
var value = validator.getFieldValue($field,
|
|
7731
|
+
validate: function(validator, $field, options, validatorName) {
|
|
7732
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
7611
7733
|
if (value === '') {
|
|
7612
7734
|
return true;
|
|
7613
7735
|
}
|
|
@@ -7704,10 +7826,10 @@ if (typeof jQuery === 'undefined') {
|
|
|
7704
7826
|
* - Name of field which its value defines the country code
|
|
7705
7827
|
* - Name of callback function that returns the country code
|
|
7706
7828
|
* - A callback function that returns the country code
|
|
7707
|
-
* @returns {
|
|
7829
|
+
* @returns {Object}
|
|
7708
7830
|
*/
|
|
7709
|
-
validate: function(validator, $field, options) {
|
|
7710
|
-
var value = validator.getFieldValue($field,
|
|
7831
|
+
validate: function(validator, $field, options, validatorName) {
|
|
7832
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
7711
7833
|
if (value === '') {
|
|
7712
7834
|
return true;
|
|
7713
7835
|
}
|
|
@@ -7725,22 +7847,18 @@ if (typeof jQuery === 'undefined') {
|
|
|
7725
7847
|
return true;
|
|
7726
7848
|
}
|
|
7727
7849
|
|
|
7728
|
-
var method = ['_', country.toLowerCase()].join('')
|
|
7729
|
-
|
|
7730
|
-
|
|
7731
|
-
|
|
7732
|
-
|
|
7733
|
-
|
|
7734
|
-
};
|
|
7850
|
+
var method = ['_', country.toLowerCase()].join(''),
|
|
7851
|
+
result = this[method](value);
|
|
7852
|
+
result = (result === true || result === false) ? { valid: result } : result;
|
|
7853
|
+
result.message = FormValidation.Helper.format(options.message || FormValidation.I18n[locale].vat.country, FormValidation.I18n[locale].vat.countries[country.toUpperCase()]);
|
|
7854
|
+
|
|
7855
|
+
return result;
|
|
7735
7856
|
},
|
|
7736
7857
|
|
|
7737
7858
|
// VAT validators
|
|
7738
7859
|
|
|
7739
7860
|
/**
|
|
7740
7861
|
* Validate Austrian VAT number
|
|
7741
|
-
* Example:
|
|
7742
|
-
* - Valid: ATU13585627
|
|
7743
|
-
* - Invalid: ATU13585626
|
|
7744
7862
|
*
|
|
7745
7863
|
* @param {String} value VAT number
|
|
7746
7864
|
* @returns {Boolean}
|
|
@@ -7775,9 +7893,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
7775
7893
|
|
|
7776
7894
|
/**
|
|
7777
7895
|
* Validate Belgian VAT number
|
|
7778
|
-
* Example:
|
|
7779
|
-
* - Valid: BE0428759497
|
|
7780
|
-
* - Invalid: BE431150351
|
|
7781
7896
|
*
|
|
7782
7897
|
* @param {String} value VAT number
|
|
7783
7898
|
* @returns {Boolean}
|
|
@@ -7803,12 +7918,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
7803
7918
|
|
|
7804
7919
|
/**
|
|
7805
7920
|
* Validate Bulgarian VAT number
|
|
7806
|
-
* Example:
|
|
7807
|
-
* - Valid: BG175074752,
|
|
7808
|
-
* BG7523169263, BG8032056031,
|
|
7809
|
-
* BG7542011030,
|
|
7810
|
-
* BG7111042925
|
|
7811
|
-
* - Invalid: BG175074753, BG7552A10004, BG7111042922
|
|
7812
7921
|
*
|
|
7813
7922
|
* @param {String} value VAT number
|
|
7814
7923
|
* @returns {Boolean}
|
|
@@ -7897,7 +8006,7 @@ if (typeof jQuery === 'undefined') {
|
|
|
7897
8006
|
|
|
7898
8007
|
return false;
|
|
7899
8008
|
},
|
|
7900
|
-
|
|
8009
|
+
|
|
7901
8010
|
/**
|
|
7902
8011
|
* Validate Brazilian VAT number (CNPJ)
|
|
7903
8012
|
*
|
|
@@ -7990,9 +8099,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
7990
8099
|
|
|
7991
8100
|
/**
|
|
7992
8101
|
* Validate Cypriot VAT number
|
|
7993
|
-
* Examples:
|
|
7994
|
-
* - Valid: CY10259033P
|
|
7995
|
-
* - Invalid: CY10259033Z
|
|
7996
8102
|
*
|
|
7997
8103
|
* @param {String} value VAT number
|
|
7998
8104
|
* @returns {Boolean}
|
|
@@ -8030,14 +8136,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8030
8136
|
|
|
8031
8137
|
/**
|
|
8032
8138
|
* Validate Czech Republic VAT number
|
|
8033
|
-
* Can be:
|
|
8034
|
-
* i) Legal entities (8 digit numbers)
|
|
8035
|
-
* ii) Individuals with a RC (the 9 or 10 digit Czech birth number)
|
|
8036
|
-
* iii) Individuals without a RC (9 digit numbers beginning with 6)
|
|
8037
|
-
*
|
|
8038
|
-
* Examples:
|
|
8039
|
-
* - Valid: i) CZ25123891; ii) CZ7103192745, CZ991231123; iii) CZ640903926
|
|
8040
|
-
* - Invalid: i) CZ25123890; ii) CZ1103492745, CZ590312123
|
|
8041
8139
|
*
|
|
8042
8140
|
* @param {String} value VAT number
|
|
8043
8141
|
* @returns {Boolean}
|
|
@@ -8123,9 +8221,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8123
8221
|
|
|
8124
8222
|
/**
|
|
8125
8223
|
* Validate German VAT number
|
|
8126
|
-
* Examples:
|
|
8127
|
-
* - Valid: DE136695976
|
|
8128
|
-
* - Invalid: DE136695978
|
|
8129
8224
|
*
|
|
8130
8225
|
* @param {String} value VAT number
|
|
8131
8226
|
* @returns {Boolean}
|
|
@@ -8143,9 +8238,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8143
8238
|
|
|
8144
8239
|
/**
|
|
8145
8240
|
* Validate Danish VAT number
|
|
8146
|
-
* Example:
|
|
8147
|
-
* - Valid: DK13585628
|
|
8148
|
-
* - Invalid: DK13585627
|
|
8149
8241
|
*
|
|
8150
8242
|
* @param {String} value VAT number
|
|
8151
8243
|
* @returns {Boolean}
|
|
@@ -8169,9 +8261,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8169
8261
|
|
|
8170
8262
|
/**
|
|
8171
8263
|
* Validate Estonian VAT number
|
|
8172
|
-
* Examples:
|
|
8173
|
-
* - Valid: EE100931558, EE100594102
|
|
8174
|
-
* - Invalid: EE100594103
|
|
8175
8264
|
*
|
|
8176
8265
|
* @param {String} value VAT number
|
|
8177
8266
|
* @returns {Boolean}
|
|
@@ -8200,12 +8289,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
8200
8289
|
* ii) NIE (Número de Identificación de Extranjeros), for foreigners
|
|
8201
8290
|
* iii) CIF (Certificado de Identificación Fiscal), for legal entities and others
|
|
8202
8291
|
*
|
|
8203
|
-
* Examples:
|
|
8204
|
-
* - Valid: i) ES54362315K; ii) ESX2482300W, ESX5253868R; iii) ESM1234567L, ESJ99216582, ESB58378431, ESB64717838
|
|
8205
|
-
* - Invalid: i) ES54362315Z; ii) ESX2482300A; iii) ESJ99216583
|
|
8206
|
-
*
|
|
8207
8292
|
* @param {String} value VAT number
|
|
8208
|
-
* @returns {Boolean}
|
|
8293
|
+
* @returns {Boolean|Object}
|
|
8209
8294
|
*/
|
|
8210
8295
|
_es: function(value) {
|
|
8211
8296
|
if (/^ES[0-9A-Z][0-9]{7}[0-9A-Z]$/.test(value)) {
|
|
@@ -8259,19 +8344,25 @@ if (typeof jQuery === 'undefined') {
|
|
|
8259
8344
|
|
|
8260
8345
|
var first = value.charAt(0);
|
|
8261
8346
|
if (/^[0-9]$/.test(first)) {
|
|
8262
|
-
return
|
|
8347
|
+
return {
|
|
8348
|
+
valid: dni(value),
|
|
8349
|
+
type: 'DNI'
|
|
8350
|
+
};
|
|
8263
8351
|
} else if (/^[XYZ]$/.test(first)) {
|
|
8264
|
-
return
|
|
8352
|
+
return {
|
|
8353
|
+
valid: nie(value),
|
|
8354
|
+
type: 'NIE'
|
|
8355
|
+
};
|
|
8265
8356
|
} else {
|
|
8266
|
-
return
|
|
8357
|
+
return {
|
|
8358
|
+
valid: cif(value),
|
|
8359
|
+
type: 'CIF'
|
|
8360
|
+
};
|
|
8267
8361
|
}
|
|
8268
8362
|
},
|
|
8269
8363
|
|
|
8270
8364
|
/**
|
|
8271
8365
|
* Validate Finnish VAT number
|
|
8272
|
-
* Examples:
|
|
8273
|
-
* - Valid: FI20774740
|
|
8274
|
-
* - Invalid: FI20774741
|
|
8275
8366
|
*
|
|
8276
8367
|
* @param {String} value VAT number
|
|
8277
8368
|
* @returns {Boolean}
|
|
@@ -8297,10 +8388,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8297
8388
|
* Validate French VAT number (TVA - taxe sur la valeur ajoutée)
|
|
8298
8389
|
* It's constructed by a SIREN number, prefixed by two characters.
|
|
8299
8390
|
*
|
|
8300
|
-
* Examples:
|
|
8301
|
-
* - Valid: FR40303265045, FR23334175221, FRK7399859412, FR4Z123456782
|
|
8302
|
-
* - Invalid: FR84323140391
|
|
8303
|
-
*
|
|
8304
8391
|
* @param {String} value VAT number
|
|
8305
8392
|
* @returns {Boolean}
|
|
8306
8393
|
*/
|
|
@@ -8335,9 +8422,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8335
8422
|
|
|
8336
8423
|
/**
|
|
8337
8424
|
* Validate United Kingdom VAT number
|
|
8338
|
-
* Example:
|
|
8339
|
-
* - Valid: GB980780684
|
|
8340
|
-
* - Invalid: GB802311781
|
|
8341
8425
|
*
|
|
8342
8426
|
* @param {String} value VAT number
|
|
8343
8427
|
* @returns {Boolean}
|
|
@@ -8392,9 +8476,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8392
8476
|
|
|
8393
8477
|
/**
|
|
8394
8478
|
* Validate Greek VAT number
|
|
8395
|
-
* Examples:
|
|
8396
|
-
* - Valid: GR023456780, EL094259216
|
|
8397
|
-
* - Invalid: EL123456781
|
|
8398
8479
|
*
|
|
8399
8480
|
* @param {String} value VAT number
|
|
8400
8481
|
* @returns {Boolean}
|
|
@@ -8428,9 +8509,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8428
8509
|
|
|
8429
8510
|
/**
|
|
8430
8511
|
* Validate Hungarian VAT number
|
|
8431
|
-
* Examples:
|
|
8432
|
-
* - Valid: HU12892312
|
|
8433
|
-
* - Invalid: HU12892313
|
|
8434
8512
|
*
|
|
8435
8513
|
* @param {String} value VAT number
|
|
8436
8514
|
* @returns {Boolean}
|
|
@@ -8455,9 +8533,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8455
8533
|
|
|
8456
8534
|
/**
|
|
8457
8535
|
* Validate Croatian VAT number
|
|
8458
|
-
* Examples:
|
|
8459
|
-
* - Valid: HR33392005961
|
|
8460
|
-
* - Invalid: HR33392005962
|
|
8461
8536
|
*
|
|
8462
8537
|
* @param {String} value VAT number
|
|
8463
8538
|
* @returns {Boolean}
|
|
@@ -8475,9 +8550,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8475
8550
|
|
|
8476
8551
|
/**
|
|
8477
8552
|
* Validate Irish VAT number
|
|
8478
|
-
* Examples:
|
|
8479
|
-
* - Valid: IE6433435F, IE6433435OA, IE8D79739I
|
|
8480
|
-
* - Invalid: IE8D79738J
|
|
8481
8553
|
*
|
|
8482
8554
|
* @param {String} value VAT number
|
|
8483
8555
|
* @returns {Boolean}
|
|
@@ -8517,9 +8589,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8517
8589
|
|
|
8518
8590
|
/**
|
|
8519
8591
|
* Validate Icelandic VAT (VSK) number
|
|
8520
|
-
* Examples:
|
|
8521
|
-
* - Valid: 12345, 123456
|
|
8522
|
-
* - Invalid: 1234567
|
|
8523
8592
|
*
|
|
8524
8593
|
* @params {String} value VAT number
|
|
8525
8594
|
* @returns {Boolean}
|
|
@@ -8537,10 +8606,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8537
8606
|
* - Next 3 are the province of residence
|
|
8538
8607
|
* - The last one is a check digit
|
|
8539
8608
|
*
|
|
8540
|
-
* Examples:
|
|
8541
|
-
* - Valid: IT00743110157
|
|
8542
|
-
* - Invalid: IT00743110158
|
|
8543
|
-
*
|
|
8544
8609
|
* @param {String} value VAT number
|
|
8545
8610
|
* @returns {Boolean}
|
|
8546
8611
|
*/
|
|
@@ -8570,10 +8635,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8570
8635
|
* - 9 digits, for legal entities
|
|
8571
8636
|
* - 12 digits, for temporarily registered taxpayers
|
|
8572
8637
|
*
|
|
8573
|
-
* Examples:
|
|
8574
|
-
* - Valid: LT119511515, LT100001919017, LT100004801610
|
|
8575
|
-
* - Invalid: LT100001919018
|
|
8576
|
-
*
|
|
8577
8638
|
* @param {String} value VAT number
|
|
8578
8639
|
* @returns {Boolean}
|
|
8579
8640
|
*/
|
|
@@ -8604,9 +8665,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8604
8665
|
|
|
8605
8666
|
/**
|
|
8606
8667
|
* Validate Luxembourg VAT number
|
|
8607
|
-
* Examples:
|
|
8608
|
-
* - Valid: LU15027442
|
|
8609
|
-
* - Invalid: LU15027443
|
|
8610
8668
|
*
|
|
8611
8669
|
* @param {String} value VAT number
|
|
8612
8670
|
* @returns {Boolean}
|
|
@@ -8624,9 +8682,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8624
8682
|
|
|
8625
8683
|
/**
|
|
8626
8684
|
* Validate Latvian VAT number
|
|
8627
|
-
* Examples:
|
|
8628
|
-
* - Valid: LV40003521600, LV16117519997
|
|
8629
|
-
* - Invalid: LV40003521601, LV16137519997
|
|
8630
8685
|
*
|
|
8631
8686
|
* @param {String} value VAT number
|
|
8632
8687
|
* @returns {Boolean}
|
|
@@ -8677,9 +8732,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8677
8732
|
|
|
8678
8733
|
/**
|
|
8679
8734
|
* Validate Maltese VAT number
|
|
8680
|
-
* Examples:
|
|
8681
|
-
* - Valid: MT11679112
|
|
8682
|
-
* - Invalid: MT11679113
|
|
8683
8735
|
*
|
|
8684
8736
|
* @param {String} value VAT number
|
|
8685
8737
|
* @returns {Boolean}
|
|
@@ -8704,9 +8756,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8704
8756
|
|
|
8705
8757
|
/**
|
|
8706
8758
|
* Validate Dutch VAT number
|
|
8707
|
-
* Examples:
|
|
8708
|
-
* - Valid: NL004495445B01
|
|
8709
|
-
* - Invalid: NL123456789B90
|
|
8710
8759
|
*
|
|
8711
8760
|
* @param {String} value VAT number
|
|
8712
8761
|
* @returns {Boolean}
|
|
@@ -8762,9 +8811,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8762
8811
|
|
|
8763
8812
|
/**
|
|
8764
8813
|
* Validate Polish VAT number
|
|
8765
|
-
* Examples:
|
|
8766
|
-
* - Valid: PL8567346215
|
|
8767
|
-
* - Invalid: PL8567346216
|
|
8768
8814
|
*
|
|
8769
8815
|
* @param {String} value VAT number
|
|
8770
8816
|
* @returns {Boolean}
|
|
@@ -8789,9 +8835,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8789
8835
|
|
|
8790
8836
|
/**
|
|
8791
8837
|
* Validate Portuguese VAT number
|
|
8792
|
-
* Examples:
|
|
8793
|
-
* - Valid: PT501964843
|
|
8794
|
-
* - Invalid: PT501964842
|
|
8795
8838
|
*
|
|
8796
8839
|
* @param {String} value VAT number
|
|
8797
8840
|
* @returns {Boolean}
|
|
@@ -8819,9 +8862,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8819
8862
|
|
|
8820
8863
|
/**
|
|
8821
8864
|
* Validate Romanian VAT number
|
|
8822
|
-
* Examples:
|
|
8823
|
-
* - Valid: RO18547290
|
|
8824
|
-
* - Invalid: RO18547291
|
|
8825
8865
|
*
|
|
8826
8866
|
* @param {String} value VAT number
|
|
8827
8867
|
* @returns {Boolean}
|
|
@@ -8926,9 +8966,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8926
8966
|
|
|
8927
8967
|
/**
|
|
8928
8968
|
* Validate Swedish VAT number
|
|
8929
|
-
* Examples:
|
|
8930
|
-
* - Valid: SE123456789701
|
|
8931
|
-
* - Invalid: SE123456789101
|
|
8932
8969
|
*
|
|
8933
8970
|
* @param {String} value VAT number
|
|
8934
8971
|
* @returns {Boolean}
|
|
@@ -8947,10 +8984,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8947
8984
|
|
|
8948
8985
|
/**
|
|
8949
8986
|
* Validate Slovenian VAT number
|
|
8950
|
-
* Examples:
|
|
8951
|
-
* - Valid: SI50223054
|
|
8952
|
-
* - Invalid: SI50223055
|
|
8953
|
-
* - Invalid: SI09999990
|
|
8954
8987
|
*
|
|
8955
8988
|
* @param {String} value VAT number
|
|
8956
8989
|
* @returns {Boolean}
|
|
@@ -8980,9 +9013,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
8980
9013
|
|
|
8981
9014
|
/**
|
|
8982
9015
|
* Validate Slovak VAT number
|
|
8983
|
-
* Examples:
|
|
8984
|
-
* - Valid: SK2022749619
|
|
8985
|
-
* - Invalid: SK2022749618
|
|
8986
9016
|
*
|
|
8987
9017
|
* @param {String} value VAT number
|
|
8988
9018
|
* @returns {Boolean}
|
|
@@ -9000,9 +9030,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
9000
9030
|
|
|
9001
9031
|
/**
|
|
9002
9032
|
* Validate Venezuelan VAT number (RIF)
|
|
9003
|
-
* Examples:
|
|
9004
|
-
* - Valid: VEJ309272292, VEV242818101, VEJ000126518, VEJ000458324, J309272292, V242818101, J000126518, J000458324
|
|
9005
|
-
* - Invalid: VEJ309272293, VEV242818100, J000126519, J000458323
|
|
9006
9033
|
*
|
|
9007
9034
|
* @param {String} value VAT number
|
|
9008
9035
|
* @returns {Boolean}
|
|
@@ -9038,9 +9065,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
9038
9065
|
|
|
9039
9066
|
/**
|
|
9040
9067
|
* Validate South African VAT number
|
|
9041
|
-
* Examples:
|
|
9042
|
-
* - Valid: 4012345678
|
|
9043
|
-
* - Invalid: 40123456789, 3012345678
|
|
9044
9068
|
*
|
|
9045
9069
|
* @params {String} value VAT number
|
|
9046
9070
|
* @returns {Boolean}
|
|
@@ -9073,8 +9097,8 @@ if (typeof jQuery === 'undefined') {
|
|
|
9073
9097
|
* - message: The invalid message
|
|
9074
9098
|
* @returns {Boolean}
|
|
9075
9099
|
*/
|
|
9076
|
-
validate: function(validator, $field, options) {
|
|
9077
|
-
var value = validator.getFieldValue($field,
|
|
9100
|
+
validate: function(validator, $field, options, validatorName) {
|
|
9101
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
9078
9102
|
if (value === '') {
|
|
9079
9103
|
return true;
|
|
9080
9104
|
}
|
|
@@ -9168,14 +9192,14 @@ if (typeof jQuery === 'undefined') {
|
|
|
9168
9192
|
*
|
|
9169
9193
|
* callback: function(value, validator, $field) {
|
|
9170
9194
|
* // value is the value of field
|
|
9171
|
-
* // validator is the
|
|
9195
|
+
* // validator is the FormValidation.Base instance
|
|
9172
9196
|
* // $field is jQuery element representing the field
|
|
9173
9197
|
* }
|
|
9174
9198
|
*
|
|
9175
9199
|
* @returns {Boolean|Object}
|
|
9176
9200
|
*/
|
|
9177
|
-
validate: function(validator, $field, options) {
|
|
9178
|
-
var value = validator.getFieldValue($field,
|
|
9201
|
+
validate: function(validator, $field, options, validatorName) {
|
|
9202
|
+
var value = validator.getFieldValue($field, validatorName);
|
|
9179
9203
|
if (value === '' || !options.country) {
|
|
9180
9204
|
return true;
|
|
9181
9205
|
}
|
|
@@ -9318,10 +9342,6 @@ if (typeof jQuery === 'undefined') {
|
|
|
9318
9342
|
|
|
9319
9343
|
/**
|
|
9320
9344
|
* Validate United Kingdom postcode
|
|
9321
|
-
* Examples:
|
|
9322
|
-
* - Standard: EC1A 1BB, W1A 1HQ, M1 1AA, B33 8TH, CR2 6XH, DN55 1PT
|
|
9323
|
-
* - Special cases:
|
|
9324
|
-
* AI-2640, ASCN 1ZZ, GIR 0AA
|
|
9325
9345
|
*
|
|
9326
9346
|
* @see http://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom
|
|
9327
9347
|
* @param {String} value The postcode
|