dqs-jquery-form-validator-rails 2.2.164 → 2.2.165
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 +11 -14
- data/app/assets/javascripts/brazil.dev.js +6 -6
- data/app/assets/javascripts/brazil.js +3 -4
- data/app/assets/javascripts/date.dev.js +2 -2
- data/app/assets/javascripts/date.js +2 -3
- data/app/assets/javascripts/file.dev.js +30 -32
- data/app/assets/javascripts/file.js +3 -4
- data/app/assets/javascripts/html5.dev.js +9 -14
- data/app/assets/javascripts/html5.js +3 -4
- data/app/assets/javascripts/jquery.form-validator.js +1784 -0
- data/app/assets/javascripts/jquery.form-validator.min.js +3 -4
- data/app/assets/javascripts/jsconf.dev.js +8 -21
- data/app/assets/javascripts/jsconf.js +3 -4
- data/app/assets/javascripts/lang/de.dev.js +43 -45
- data/app/assets/javascripts/lang/de.js +3 -4
- data/app/assets/javascripts/lang/es.dev.js +40 -39
- data/app/assets/javascripts/lang/es.js +3 -4
- data/app/assets/javascripts/lang/fr.dev.js +43 -42
- data/app/assets/javascripts/lang/fr.js +3 -4
- data/app/assets/javascripts/lang/pt.dev.js +2 -3
- data/app/assets/javascripts/lang/pt.js +3 -4
- data/app/assets/javascripts/lang/sv.dev.js +2 -3
- data/app/assets/javascripts/lang/sv.js +3 -4
- data/app/assets/javascripts/location.dev.js +1 -1
- data/app/assets/javascripts/location.js +2 -3
- data/app/assets/javascripts/sanitize.dev.js +30 -39
- data/app/assets/javascripts/sanitize.js +3 -4
- data/app/assets/javascripts/security.dev.js +34 -51
- data/app/assets/javascripts/security.js +3 -4
- data/app/assets/javascripts/sweden.dev.js +13 -16
- data/app/assets/javascripts/sweden.js +3 -4
- data/app/assets/javascripts/toggleDisabled.dev.js +5 -6
- data/app/assets/javascripts/toggleDisabled.js +3 -4
- data/app/assets/javascripts/uk.dev.js +13 -13
- data/app/assets/javascripts/uk.js +3 -4
- data/lib/dqs/jquery/form/validator/rails/version.rb +1 -1
- metadata +2 -17
- data/app/assets/javascripts/lang/cz.dev.js +0 -65
- data/app/assets/javascripts/lang/cz.js +0 -9
- data/app/assets/javascripts/lang/it.dev.js +0 -62
- data/app/assets/javascripts/lang/it.js +0 -9
- data/app/assets/javascripts/lang/pl.dev.js +0 -65
- data/app/assets/javascripts/lang/pl.js +0 -9
- data/app/assets/javascripts/lang/ro.dev.js +0 -65
- data/app/assets/javascripts/lang/ro.js +0 -9
- data/app/assets/javascripts/lang/ru.dev.js +0 -66
- data/app/assets/javascripts/lang/ru.js +0 -9
- data/app/assets/javascripts/src/core-validators.js +0 -343
- data/app/assets/javascripts/src/dialogs.js +0 -123
- data/app/assets/javascripts/src/jquery-plugins.js +0 -452
- data/app/assets/javascripts/src/module-loader.js +0 -150
- data/app/assets/javascripts/src/setup.js +0 -168
- data/app/assets/javascripts/src/utils.js +0 -840
@@ -1,65 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* jQuery Form Validator
|
3
|
-
* ------------------------------------------
|
4
|
-
*
|
5
|
-
* Romanian language package
|
6
|
-
*
|
7
|
-
* @website http://formvalidator.net/
|
8
|
-
* @license MIT
|
9
|
-
* @version 2.2.163
|
10
|
-
*/
|
11
|
-
(function($, window) {
|
12
|
-
|
13
|
-
'use strict';
|
14
|
-
|
15
|
-
$(window).bind('validatorsLoaded', function() {
|
16
|
-
|
17
|
-
$.formUtils.LANG = {
|
18
|
-
errorTitle: 'Nu sa reusit lansarea formularului!',
|
19
|
-
requiredField: 'Acest câmp este obligatoriu',
|
20
|
-
requiredfields: 'Nu toate câmpurile obligatorii au fost completate',
|
21
|
-
badTime: 'Timpul introdus este incorect',
|
22
|
-
badEmail: 'Adresa de e-mail este incorectă',
|
23
|
-
badTelephone: 'Numărul de telefon este incorect',
|
24
|
-
badSecurityAnswer: 'Răspuns incorect la întrebarea de siguran?ă',
|
25
|
-
badDate: 'Dară incorectă',
|
26
|
-
lengthBadStart: 'Valoarea introdusă trebuie să fie interval ',
|
27
|
-
lengthBadEnd: ' caractere',
|
28
|
-
lengthTooLongStart: 'Valoarea introdusă este mai mare decât ',
|
29
|
-
lengthTooShortStart: 'Valoarea introdusă este mai mică decât ',
|
30
|
-
notConfirmed: 'Valorile introduse nu au fost confirmate',
|
31
|
-
badDomain: 'Domeniul este incorect',
|
32
|
-
badUrl: 'Adresa URL este incorectă',
|
33
|
-
badCustomVal: 'Valoarea introdusă este incorectă',
|
34
|
-
andSpaces: ' şi spaţierea',
|
35
|
-
badInt: 'Numărul introdus este incorect',
|
36
|
-
badSecurityNumber: 'Numărul de asigurare introdus este incorect',
|
37
|
-
badUKVatAnswer: 'Numărul CIF introdus este incorect',
|
38
|
-
badStrength: 'Parola Dvs nu este suficient de sigură',
|
39
|
-
badNumberOfSelectedOptionsStart: 'Trebuie să alegi măcar ',
|
40
|
-
badNumberOfSelectedOptionsEnd: ' răspunsuri',
|
41
|
-
badAlphaNumeric: 'Valoarea introdusă trebuie să con însă doar caractere alfanumerice ',
|
42
|
-
badAlphaNumericExtra: ' și ',
|
43
|
-
wrongFileSize: 'Fisierul trimis este prea mare (max %s)',
|
44
|
-
wrongFileType: 'Se acceptă doar fisiere tip %s',
|
45
|
-
groupCheckedRangeStart: 'Te rog alege între ',
|
46
|
-
groupCheckedTooFewStart: 'Te rog alege măcar ',
|
47
|
-
groupCheckedTooManyStart: 'Te rog alege maxim ',
|
48
|
-
groupCheckedEnd: ' elemnt(e)',
|
49
|
-
badCreditCard: 'Numărul de card introdus este incorect',
|
50
|
-
badCVV: 'Numărul CVV introdus este incorect',
|
51
|
-
wrongFileDim: 'Dimensiunea imaginii este incorectă,',
|
52
|
-
imageTooTall: 'imaginea nu poate fi mai înaltă decât',
|
53
|
-
imageTooWide: 'imaginea nu poate fi mai lată decât',
|
54
|
-
imageTooSmall: 'imaginea este prea mică',
|
55
|
-
min: 'min',
|
56
|
-
max: 'max',
|
57
|
-
imageRatioNotAccepted: 'Proportiile imaginii sunt incorecte',
|
58
|
-
badBrazilTelephoneAnswer: 'Numărul de telefon introdus este incorect.',
|
59
|
-
badBrazilCEPAnswer: 'CEP incorect',
|
60
|
-
badBrazilCPFAnswer: 'CPF incorect'
|
61
|
-
};
|
62
|
-
|
63
|
-
});
|
64
|
-
|
65
|
-
})(jQuery, window);
|
@@ -1,9 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* JQUERY-FORM-VALIDATOR
|
3
|
-
*
|
4
|
-
* @version 2.2.163
|
5
|
-
* @website http://formvalidator.net/
|
6
|
-
* @author Victor Jonsson, http://victorjonsson.se
|
7
|
-
* @license MIT
|
8
|
-
*/
|
9
|
-
!function(a,b){"use strict";a(b).bind("validatorsLoaded",function(){a.formUtils.LANG={errorTitle:"Nu sa reusit lansarea formularului!",requiredField:"Acest câmp este obligatoriu",requiredfields:"Nu toate câmpurile obligatorii au fost completate",badTime:"Timpul introdus este incorect",badEmail:"Adresa de e-mail este incorectă",badTelephone:"Numărul de telefon este incorect",badSecurityAnswer:"Răspuns incorect la întrebarea de siguran?ă",badDate:"Dară incorectă",lengthBadStart:"Valoarea introdusă trebuie să fie interval ",lengthBadEnd:" caractere",lengthTooLongStart:"Valoarea introdusă este mai mare decât ",lengthTooShortStart:"Valoarea introdusă este mai mică decât ",notConfirmed:"Valorile introduse nu au fost confirmate",badDomain:"Domeniul este incorect",badUrl:"Adresa URL este incorectă",badCustomVal:"Valoarea introdusă este incorectă",andSpaces:" şi spaţierea",badInt:"Numărul introdus este incorect",badSecurityNumber:"Numărul de asigurare introdus este incorect",badUKVatAnswer:"Numărul CIF introdus este incorect",badStrength:"Parola Dvs nu este suficient de sigură",badNumberOfSelectedOptionsStart:"Trebuie să alegi măcar ",badNumberOfSelectedOptionsEnd:" răspunsuri",badAlphaNumeric:"Valoarea introdusă trebuie să con însă doar caractere alfanumerice ",badAlphaNumericExtra:" și ",wrongFileSize:"Fisierul trimis este prea mare (max %s)",wrongFileType:"Se acceptă doar fisiere tip %s",groupCheckedRangeStart:"Te rog alege între ",groupCheckedTooFewStart:"Te rog alege măcar ",groupCheckedTooManyStart:"Te rog alege maxim ",groupCheckedEnd:" elemnt(e)",badCreditCard:"Numărul de card introdus este incorect",badCVV:"Numărul CVV introdus este incorect",wrongFileDim:"Dimensiunea imaginii este incorectă,",imageTooTall:"imaginea nu poate fi mai înaltă decât",imageTooWide:"imaginea nu poate fi mai lată decât",imageTooSmall:"imaginea este prea mică",min:"min",max:"max",imageRatioNotAccepted:"Proportiile imaginii sunt incorecte",badBrazilTelephoneAnswer:"Numărul de telefon introdus este incorect.",badBrazilCEPAnswer:"CEP incorect",badBrazilCPFAnswer:"CPF incorect"}})}(jQuery,window);
|
@@ -1,66 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* jQuery Form Validator
|
3
|
-
* ------------------------------------------
|
4
|
-
*
|
5
|
-
* Russian language package
|
6
|
-
*
|
7
|
-
* @website http://formvalidator.net/
|
8
|
-
* @license MIT
|
9
|
-
* @version 2.2.163
|
10
|
-
*/
|
11
|
-
(function($, window) {
|
12
|
-
|
13
|
-
"use strict";
|
14
|
-
|
15
|
-
$(window).bind('validatorsLoaded', function() {
|
16
|
-
|
17
|
-
$.formUtils.LANG = {
|
18
|
-
|
19
|
-
errorTitle: 'Ошибка отправки формы!',
|
20
|
-
requiredField: 'Это обязательное поле',
|
21
|
-
requiredFields: 'Вы задали не все обязательные поля',
|
22
|
-
badTime: 'Вы задали некорректное время',
|
23
|
-
badEmail: 'Вы задали некорректный e-mail',
|
24
|
-
badTelephone: 'Вы задали некорректный номер телефона',
|
25
|
-
badSecurityAnswer: 'Вы задали некорректный ответ на секретный вопрос',
|
26
|
-
badDate: 'Вы задали некорректную дату',
|
27
|
-
lengthBadStart: 'Значение должно быть в диапазоне',
|
28
|
-
lengthBadEnd: ' символов',
|
29
|
-
lengthTooLongStart: 'Значение длинее, чем ',
|
30
|
-
lengthTooShortStart: 'Значение меньше, чем ',
|
31
|
-
notConfirmed: 'Введённые значения не могут быть подтверждены',
|
32
|
-
badDomain: 'Некорректное значение домена',
|
33
|
-
badUrl: 'Некорретный URL',
|
34
|
-
badCustomVal: 'Введённое значение неверно',
|
35
|
-
andSpaces: ' и пробелы ',
|
36
|
-
badInt: 'Значение - не число',
|
37
|
-
badSecurityNumber: 'Введённый защитный номер - неправильный',
|
38
|
-
badUKVatAnswer: 'Некорректный UK VAT номер',
|
39
|
-
badStrength: 'Пароль не достаточно надёжен',
|
40
|
-
badNumberOfSelectedOptionsStart: 'Вы должны выбрать как минимум ',
|
41
|
-
badNumberOfSelectedOptionsEnd: ' ответов',
|
42
|
-
badAlphaNumeric: 'Значение должно содержать только числа и буквы ',
|
43
|
-
badAlphaNumericExtra: ' и ',
|
44
|
-
wrongFileSize: 'Загружаемый файл слишком велик (максимальный размер %s)',
|
45
|
-
wrongFileType: 'Принимаются файлы следующих типов %s',
|
46
|
-
groupCheckedRangeStart: 'Выберите между ',
|
47
|
-
groupCheckedTooFewStart: 'Выберите как минимум ',
|
48
|
-
groupCheckedTooManyStart: 'Выберите максимум из ',
|
49
|
-
groupCheckedEnd: ' элемент(ов)',
|
50
|
-
badCreditCard: 'Номер кредитной карты некорректен',
|
51
|
-
badCVV: 'CVV номер некорректно',
|
52
|
-
wrongFileDim : 'Неверные размеры графического файла,',
|
53
|
-
imageTooTall : 'изображение не может быть уже чем',
|
54
|
-
imageTooWide : 'изображение не может быть шире чем',
|
55
|
-
imageTooSmall : 'изображение слишком мало',
|
56
|
-
min : 'минимум',
|
57
|
-
max : 'максимум',
|
58
|
-
imageRatioNotAccepted : 'Изображение с таким соотношением сторон не принимается',
|
59
|
-
badBrazilTelephoneAnswer: 'Введённый номер телефона неправильный',
|
60
|
-
badBrazilCEPAnswer: 'CEP неправильный',
|
61
|
-
badBrazilCPFAnswer: 'CPF неправильный'
|
62
|
-
};
|
63
|
-
|
64
|
-
});
|
65
|
-
|
66
|
-
})(jQuery, window);
|
@@ -1,9 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* JQUERY-FORM-VALIDATOR
|
3
|
-
*
|
4
|
-
* @version 2.2.163
|
5
|
-
* @website http://formvalidator.net/
|
6
|
-
* @author Victor Jonsson, http://victorjonsson.se
|
7
|
-
* @license MIT
|
8
|
-
*/
|
9
|
-
!function(a,b){"use strict";a(b).bind("validatorsLoaded",function(){a.formUtils.LANG={errorTitle:"Ошибка отправки формы!",requiredField:"Это обязательное поле",requiredFields:"Вы задали не все обязательные поля",badTime:"Вы задали некорректное время",badEmail:"Вы задали некорректный e-mail",badTelephone:"Вы задали некорректный номер телефона",badSecurityAnswer:"Вы задали некорректный ответ на секретный вопрос",badDate:"Вы задали некорректную дату",lengthBadStart:"Значение должно быть в диапазоне",lengthBadEnd:" символов",lengthTooLongStart:"Значение длинее, чем ",lengthTooShortStart:"Значение меньше, чем ",notConfirmed:"Введённые значения не могут быть подтверждены",badDomain:"Некорректное значение домена",badUrl:"Некорретный URL",badCustomVal:"Введённое значение неверно",andSpaces:" и пробелы ",badInt:"Значение - не число",badSecurityNumber:"Введённый защитный номер - неправильный",badUKVatAnswer:"Некорректный UK VAT номер",badStrength:"Пароль не достаточно надёжен",badNumberOfSelectedOptionsStart:"Вы должны выбрать как минимум ",badNumberOfSelectedOptionsEnd:" ответов",badAlphaNumeric:"Значение должно содержать только числа и буквы ",badAlphaNumericExtra:" и ",wrongFileSize:"Загружаемый файл слишком велик (максимальный размер %s)",wrongFileType:"Принимаются файлы следующих типов %s",groupCheckedRangeStart:"Выберите между ",groupCheckedTooFewStart:"Выберите как минимум ",groupCheckedTooManyStart:"Выберите максимум из ",groupCheckedEnd:" элемент(ов)",badCreditCard:"Номер кредитной карты некорректен",badCVV:"CVV номер некорректно",wrongFileDim:"Неверные размеры графического файла,",imageTooTall:"изображение не может быть уже чем",imageTooWide:"изображение не может быть шире чем",imageTooSmall:"изображение слишком мало",min:"минимум",max:"максимум",imageRatioNotAccepted:"Изображение с таким соотношением сторон не принимается",badBrazilTelephoneAnswer:"Введённый номер телефона неправильный",badBrazilCEPAnswer:"CEP неправильный",badBrazilCPFAnswer:"CPF неправильный"}})}(jQuery,window);
|
@@ -1,343 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* File declaring all default validators.
|
3
|
-
*/
|
4
|
-
(function($) {
|
5
|
-
|
6
|
-
/*
|
7
|
-
* Validate email
|
8
|
-
*/
|
9
|
-
$.formUtils.addValidator({
|
10
|
-
name: 'email',
|
11
|
-
validatorFunction: function (email) {
|
12
|
-
|
13
|
-
var emailParts = email.toLowerCase().split('@'),
|
14
|
-
localPart = emailParts[0],
|
15
|
-
domain = emailParts[1];
|
16
|
-
|
17
|
-
if (localPart && domain) {
|
18
|
-
|
19
|
-
if( localPart.indexOf('"') === 0 ) {
|
20
|
-
var len = localPart.length;
|
21
|
-
localPart = localPart.replace(/\"/g, '');
|
22
|
-
if( localPart.length !== (len-2) ) {
|
23
|
-
return false; // It was not allowed to have more than two apostrophes
|
24
|
-
}
|
25
|
-
}
|
26
|
-
|
27
|
-
return $.formUtils.validators.validate_domain.validatorFunction(emailParts[1]) &&
|
28
|
-
localPart.indexOf('.') !== 0 &&
|
29
|
-
localPart.substring(localPart.length-1, localPart.length) !== '.' &&
|
30
|
-
localPart.indexOf('..') === -1 &&
|
31
|
-
!(/[^\w\+\.\-\#\-\_\~\!\$\&\'\(\)\*\+\,\;\=\:]/.test(localPart));
|
32
|
-
}
|
33
|
-
|
34
|
-
return false;
|
35
|
-
},
|
36
|
-
errorMessage: '',
|
37
|
-
errorMessageKey: 'badEmail'
|
38
|
-
});
|
39
|
-
|
40
|
-
/*
|
41
|
-
* Validate domain name
|
42
|
-
*/
|
43
|
-
$.formUtils.addValidator({
|
44
|
-
name: 'domain',
|
45
|
-
validatorFunction: function (val) {
|
46
|
-
return val.length > 0 &&
|
47
|
-
val.length <= 253 && // Including sub domains
|
48
|
-
!(/[^a-zA-Z0-9]/.test(val.slice(-2))) && !(/[^a-zA-Z0-9]/.test(val.substr(0, 1))) && !(/[^a-zA-Z0-9\.\-]/.test(val)) &&
|
49
|
-
val.split('..').length === 1 &&
|
50
|
-
val.split('.').length > 1;
|
51
|
-
},
|
52
|
-
errorMessage: '',
|
53
|
-
errorMessageKey: 'badDomain'
|
54
|
-
});
|
55
|
-
|
56
|
-
/*
|
57
|
-
* Validate required
|
58
|
-
*/
|
59
|
-
$.formUtils.addValidator({
|
60
|
-
name: 'required',
|
61
|
-
validatorFunction: function (val, $el, config, language, $form) {
|
62
|
-
switch ($el.attr('type')) {
|
63
|
-
case 'checkbox':
|
64
|
-
return $el.is(':checked');
|
65
|
-
case 'radio':
|
66
|
-
return $form.find('input[name="' + $el.attr('name') + '"]').filter(':checked').length > 0;
|
67
|
-
default:
|
68
|
-
return $.trim(val) !== '';
|
69
|
-
}
|
70
|
-
},
|
71
|
-
errorMessage: '',
|
72
|
-
errorMessageKey: function(config) {
|
73
|
-
if (config.errorMessagePosition === 'top' || config.errorMessagePosition === 'custom') {
|
74
|
-
return 'requiredFields';
|
75
|
-
}
|
76
|
-
else {
|
77
|
-
return 'requiredField';
|
78
|
-
}
|
79
|
-
}
|
80
|
-
});
|
81
|
-
|
82
|
-
/*
|
83
|
-
* Validate length range
|
84
|
-
*/
|
85
|
-
$.formUtils.addValidator({
|
86
|
-
name: 'length',
|
87
|
-
validatorFunction: function (val, $el, conf, lang) {
|
88
|
-
var lengthAllowed = $el.valAttr('length'),
|
89
|
-
type = $el.attr('type');
|
90
|
-
|
91
|
-
if (lengthAllowed === undefined) {
|
92
|
-
alert('Please add attribute "data-validation-length" to ' + $el[0].nodeName + ' named ' + $el.attr('name'));
|
93
|
-
return true;
|
94
|
-
}
|
95
|
-
|
96
|
-
// check if length is above min, below max or within range.
|
97
|
-
var len = type === 'file' && $el.get(0).files !== undefined ? $el.get(0).files.length : val.length,
|
98
|
-
lengthCheckResults = $.formUtils.numericRangeCheck(len, lengthAllowed),
|
99
|
-
checkResult;
|
100
|
-
|
101
|
-
switch (lengthCheckResults[0]) { // outside of allowed range
|
102
|
-
case 'out':
|
103
|
-
this.errorMessage = lang.lengthBadStart + lengthAllowed + lang.lengthBadEnd;
|
104
|
-
checkResult = false;
|
105
|
-
break;
|
106
|
-
// too short
|
107
|
-
case 'min':
|
108
|
-
this.errorMessage = lang.lengthTooShortStart + lengthCheckResults[1] + lang.lengthBadEnd;
|
109
|
-
checkResult = false;
|
110
|
-
break;
|
111
|
-
// too long
|
112
|
-
case 'max':
|
113
|
-
this.errorMessage = lang.lengthTooLongStart + lengthCheckResults[1] + lang.lengthBadEnd;
|
114
|
-
checkResult = false;
|
115
|
-
break;
|
116
|
-
// ok
|
117
|
-
default:
|
118
|
-
checkResult = true;
|
119
|
-
}
|
120
|
-
|
121
|
-
return checkResult;
|
122
|
-
},
|
123
|
-
errorMessage: '',
|
124
|
-
errorMessageKey: ''
|
125
|
-
});
|
126
|
-
|
127
|
-
/*
|
128
|
-
* Validate url
|
129
|
-
*/
|
130
|
-
$.formUtils.addValidator({
|
131
|
-
name: 'url',
|
132
|
-
validatorFunction: function (url) {
|
133
|
-
// written by Scott Gonzalez: http://projects.scottsplayground.com/iri/
|
134
|
-
// - Victor Jonsson added support for arrays in the url ?arg[]=sdfsdf
|
135
|
-
// - General improvements made by Stéphane Moureau <https://github.com/TraderStf>
|
136
|
-
|
137
|
-
var urlFilter = /^(https?|ftp):\/\/((((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])(\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])(\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/(((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|\[|\]|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#(((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i;
|
138
|
-
if (urlFilter.test(url)) {
|
139
|
-
var domain = url.split('://')[1],
|
140
|
-
domainSlashPos = domain.indexOf('/');
|
141
|
-
|
142
|
-
if (domainSlashPos > -1) {
|
143
|
-
domain = domain.substr(0, domainSlashPos);
|
144
|
-
}
|
145
|
-
|
146
|
-
return $.formUtils.validators.validate_domain.validatorFunction(domain); // todo: add support for IP-addresses
|
147
|
-
}
|
148
|
-
return false;
|
149
|
-
},
|
150
|
-
errorMessage: '',
|
151
|
-
errorMessageKey: 'badUrl'
|
152
|
-
});
|
153
|
-
|
154
|
-
/*
|
155
|
-
* Validate number (floating or integer)
|
156
|
-
*/
|
157
|
-
$.formUtils.addValidator({
|
158
|
-
name: 'number',
|
159
|
-
validatorFunction: function (val, $el, conf) {
|
160
|
-
if (val !== '') {
|
161
|
-
var allowing = $el.valAttr('allowing') || '',
|
162
|
-
decimalSeparator = $el.valAttr('decimal-separator') || conf.decimalSeparator,
|
163
|
-
allowsRange = false,
|
164
|
-
begin, end,
|
165
|
-
steps = $el.valAttr('step') || '',
|
166
|
-
allowsSteps = false;
|
167
|
-
|
168
|
-
var sanitize = $el.attr('data-sanitize') || '';
|
169
|
-
var isFormattedWithNumeral = sanitize.split(/\s/).find(function (name) {
|
170
|
-
return (name === 'numberFormat');
|
171
|
-
});
|
172
|
-
if (isFormattedWithNumeral) {
|
173
|
-
if (!window.numeral) {
|
174
|
-
throw new ReferenceError('The data-sanitize value numberFormat cannot be used without the numeral' +
|
175
|
-
' library. Please see Data Validation in http://www.formvalidator.net for more information.');
|
176
|
-
}
|
177
|
-
//Unformat input first, then convert back to String
|
178
|
-
val = String(numeral().unformat(val));
|
179
|
-
}
|
180
|
-
|
181
|
-
if (allowing.indexOf('number') === -1) {
|
182
|
-
allowing += ',number';
|
183
|
-
}
|
184
|
-
|
185
|
-
if (allowing.indexOf('negative') === -1 && val.indexOf('-') === 0) {
|
186
|
-
return false;
|
187
|
-
}
|
188
|
-
|
189
|
-
if (allowing.indexOf('range') > -1) {
|
190
|
-
begin = parseFloat(allowing.substring(allowing.indexOf('[') + 1, allowing.indexOf(';')));
|
191
|
-
end = parseFloat(allowing.substring(allowing.indexOf(';') + 1, allowing.indexOf(']')));
|
192
|
-
allowsRange = true;
|
193
|
-
}
|
194
|
-
|
195
|
-
if (steps !== '') {
|
196
|
-
allowsSteps = true;
|
197
|
-
}
|
198
|
-
|
199
|
-
if (decimalSeparator === ',') {
|
200
|
-
if (val.indexOf('.') > -1) {
|
201
|
-
return false;
|
202
|
-
}
|
203
|
-
// Fix for checking range with floats using ,
|
204
|
-
val = val.replace(',', '.');
|
205
|
-
}
|
206
|
-
if (val.replace(/[0-9-]/g, '') === '' && (!allowsRange || (val >= begin && val <= end)) && (!allowsSteps || (val % steps === 0))) {
|
207
|
-
return true;
|
208
|
-
}
|
209
|
-
|
210
|
-
if (allowing.indexOf('float') > -1 && val.match(new RegExp('^([0-9-]+)\\.([0-9]+)$')) !== null && (!allowsRange || (val >= begin && val <= end)) && (!allowsSteps || (val % steps === 0))) {
|
211
|
-
return true;
|
212
|
-
}
|
213
|
-
}
|
214
|
-
return false;
|
215
|
-
},
|
216
|
-
errorMessage: '',
|
217
|
-
errorMessageKey: 'badInt'
|
218
|
-
});
|
219
|
-
|
220
|
-
/*
|
221
|
-
* Validate alpha numeric
|
222
|
-
*/
|
223
|
-
$.formUtils.addValidator({
|
224
|
-
name: 'alphanumeric',
|
225
|
-
validatorFunction: function (val, $el, conf, language) {
|
226
|
-
var patternStart = '^([a-zA-Z0-9',
|
227
|
-
patternEnd = ']+)$',
|
228
|
-
additionalChars = $el.valAttr('allowing'),
|
229
|
-
pattern = '';
|
230
|
-
|
231
|
-
if (additionalChars) {
|
232
|
-
pattern = patternStart + additionalChars + patternEnd;
|
233
|
-
var extra = additionalChars.replace(/\\/g, '');
|
234
|
-
if (extra.indexOf(' ') > -1) {
|
235
|
-
extra = extra.replace(' ', '');
|
236
|
-
extra += language.andSpaces || $.formUtils.LANG.andSpaces;
|
237
|
-
}
|
238
|
-
this.errorMessage = language.badAlphaNumeric + language.badAlphaNumericExtra + extra;
|
239
|
-
} else {
|
240
|
-
pattern = patternStart + patternEnd;
|
241
|
-
this.errorMessage = language.badAlphaNumeric;
|
242
|
-
}
|
243
|
-
|
244
|
-
return new RegExp(pattern).test(val);
|
245
|
-
},
|
246
|
-
errorMessage: '',
|
247
|
-
errorMessageKey: ''
|
248
|
-
});
|
249
|
-
|
250
|
-
/*
|
251
|
-
* Validate against regexp
|
252
|
-
*/
|
253
|
-
$.formUtils.addValidator({
|
254
|
-
name: 'custom',
|
255
|
-
validatorFunction: function (val, $el) {
|
256
|
-
var regexp = new RegExp($el.valAttr('regexp'));
|
257
|
-
return regexp.test(val);
|
258
|
-
},
|
259
|
-
errorMessage: '',
|
260
|
-
errorMessageKey: 'badCustomVal'
|
261
|
-
});
|
262
|
-
|
263
|
-
/*
|
264
|
-
* Validate date
|
265
|
-
*/
|
266
|
-
$.formUtils.addValidator({
|
267
|
-
name: 'date',
|
268
|
-
validatorFunction: function (date, $el, conf) {
|
269
|
-
var dateFormat = $el.valAttr('format') || conf.dateFormat || 'yyyy-mm-dd',
|
270
|
-
addMissingLeadingZeros = $el.valAttr('require-leading-zero') === 'false';
|
271
|
-
return $.formUtils.parseDate(date, dateFormat, addMissingLeadingZeros) !== false;
|
272
|
-
},
|
273
|
-
errorMessage: '',
|
274
|
-
errorMessageKey: 'badDate'
|
275
|
-
});
|
276
|
-
|
277
|
-
|
278
|
-
/*
|
279
|
-
* Validate group of checkboxes, validate qty required is checked
|
280
|
-
* written by Steve Wasiura : http://stevewasiura.waztech.com
|
281
|
-
* element attrs
|
282
|
-
* data-validation="checkbox_group"
|
283
|
-
* data-validation-qty="1-2" // min 1 max 2
|
284
|
-
* data-validation-error-msg="chose min 1, max of 2 checkboxes"
|
285
|
-
*/
|
286
|
-
$.formUtils.addValidator({
|
287
|
-
name: 'checkbox_group',
|
288
|
-
validatorFunction: function (val, $el, conf, lang, $form) {
|
289
|
-
// preset return var
|
290
|
-
var isValid = true,
|
291
|
-
// get name of element. since it is a checkbox group, all checkboxes will have same name
|
292
|
-
elname = $el.attr('name'),
|
293
|
-
// get checkboxes and count the checked ones
|
294
|
-
$checkBoxes = $('input[type=checkbox][name^="' + elname + '"]', $form),
|
295
|
-
checkedCount = $checkBoxes.filter(':checked').length,
|
296
|
-
// get el attr that specs qty required / allowed
|
297
|
-
qtyAllowed = $el.valAttr('qty');
|
298
|
-
|
299
|
-
if (qtyAllowed === undefined) {
|
300
|
-
var elementType = $el.get(0).nodeName;
|
301
|
-
alert('Attribute "data-validation-qty" is missing from ' + elementType + ' named ' + $el.attr('name'));
|
302
|
-
}
|
303
|
-
|
304
|
-
// call Utility function to check if count is above min, below max, within range etc.
|
305
|
-
var qtyCheckResults = $.formUtils.numericRangeCheck(checkedCount, qtyAllowed);
|
306
|
-
|
307
|
-
// results will be array, [0]=result str, [1]=qty int
|
308
|
-
switch (qtyCheckResults[0]) {
|
309
|
-
// outside allowed range
|
310
|
-
case 'out':
|
311
|
-
this.errorMessage = lang.groupCheckedRangeStart + qtyAllowed + lang.groupCheckedEnd;
|
312
|
-
isValid = false;
|
313
|
-
break;
|
314
|
-
// below min qty
|
315
|
-
case 'min':
|
316
|
-
this.errorMessage = lang.groupCheckedTooFewStart + qtyCheckResults[1] + lang.groupCheckedEnd;
|
317
|
-
isValid = false;
|
318
|
-
break;
|
319
|
-
// above max qty
|
320
|
-
case 'max':
|
321
|
-
this.errorMessage = lang.groupCheckedTooManyStart + qtyCheckResults[1] + lang.groupCheckedEnd;
|
322
|
-
isValid = false;
|
323
|
-
break;
|
324
|
-
// ok
|
325
|
-
default:
|
326
|
-
isValid = true;
|
327
|
-
}
|
328
|
-
|
329
|
-
if( !isValid ) {
|
330
|
-
var _triggerOnBlur = function() {
|
331
|
-
$checkBoxes.unbind('click', _triggerOnBlur);
|
332
|
-
$checkBoxes.filter('*[data-validation]').validateInputOnBlur(lang, conf, false, 'blur');
|
333
|
-
};
|
334
|
-
$checkBoxes.bind('click', _triggerOnBlur);
|
335
|
-
}
|
336
|
-
|
337
|
-
return isValid;
|
338
|
-
}
|
339
|
-
// errorMessage : '', // set above in switch statement
|
340
|
-
// errorMessageKey: '' // not used
|
341
|
-
});
|
342
|
-
|
343
|
-
})(jQuery);
|
@@ -1,123 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Utility methods used for displaying error messages (attached to $.formUtils)
|
3
|
-
*/
|
4
|
-
(function ($) {
|
5
|
-
|
6
|
-
'use strict';
|
7
|
-
|
8
|
-
var errorDialogs = {
|
9
|
-
|
10
|
-
getParentContainer: function ($elem) {
|
11
|
-
if ($elem.valAttr('error-msg-container')) {
|
12
|
-
return $($elem.valAttr('error-msg-container'));
|
13
|
-
} else {
|
14
|
-
var $parent = $elem.parent();
|
15
|
-
if (!$parent.hasClass('form-group') && !$parent.closest('form').hasClass('form-horizontal')) {
|
16
|
-
var $formGroup = $parent.closest('.form-group');
|
17
|
-
if ($formGroup.length) {
|
18
|
-
return $formGroup.eq(0);
|
19
|
-
}
|
20
|
-
}
|
21
|
-
return $parent;
|
22
|
-
}
|
23
|
-
},
|
24
|
-
applyErrorStyling: function ($elem, conf) {
|
25
|
-
$elem
|
26
|
-
.addClass(conf.errorElementClass)
|
27
|
-
.removeClass('valid');
|
28
|
-
|
29
|
-
this.getParentContainer($elem)
|
30
|
-
.addClass(conf.inputParentClassOnError)
|
31
|
-
.removeClass(conf.inputParentClassOnSuccess);
|
32
|
-
|
33
|
-
if (conf.borderColorOnError !== '') {
|
34
|
-
$elem.css('border-color', conf.borderColorOnError);
|
35
|
-
}
|
36
|
-
},
|
37
|
-
removeErrorStyling: function ($elem, conf) {
|
38
|
-
$elem.each(function () {
|
39
|
-
var $this = $(this);
|
40
|
-
|
41
|
-
errorDialogs.setInlineErrorMessage($this, '', conf, conf.errorMessagePosition);
|
42
|
-
|
43
|
-
$this
|
44
|
-
.removeClass('valid')
|
45
|
-
.removeClass(conf.errorElementClass)
|
46
|
-
.css('border-color', '');
|
47
|
-
|
48
|
-
errorDialogs.getParentContainer($this)
|
49
|
-
.removeClass(conf.inputParentClassOnError)
|
50
|
-
.removeClass(conf.inputParentClassOnSuccess)
|
51
|
-
.find('.' + conf.errorMessageClass) // remove inline span holding error message
|
52
|
-
.remove();
|
53
|
-
});
|
54
|
-
},
|
55
|
-
setInlineErrorMessage: function ($input, errorMsg, conf, $messageContainer) {
|
56
|
-
var custom = document.getElementById($input.attr('name') + '_err_msg'),
|
57
|
-
setErrorMessage = function ($elem) {
|
58
|
-
$.formUtils.$win.trigger('validationErrorDisplay', [$input, $elem]);
|
59
|
-
$elem.html(errorMsg);
|
60
|
-
},
|
61
|
-
$message;
|
62
|
-
|
63
|
-
if (custom) {
|
64
|
-
$.formUtils.warn('Using deprecated element reference ' + custom.id);
|
65
|
-
$messageContainer = $(custom);
|
66
|
-
} else if (typeof $messageContainer === 'function') {
|
67
|
-
$messageContainer = $messageContainer($input, errorMsg, conf);
|
68
|
-
}
|
69
|
-
|
70
|
-
if (typeof $messageContainer === 'object') {
|
71
|
-
var $found = false;
|
72
|
-
$messageContainer.find('.' + conf.errorMessageClass).each(function () {
|
73
|
-
if (this.inputReferer === $input[0]) {
|
74
|
-
$found = $(this);
|
75
|
-
return false;
|
76
|
-
}
|
77
|
-
});
|
78
|
-
if ($found) {
|
79
|
-
if (!errorMsg) {
|
80
|
-
$found.remove();
|
81
|
-
} else {
|
82
|
-
setErrorMessage($found);
|
83
|
-
}
|
84
|
-
} else if(errorMsg !== '') {
|
85
|
-
$message = $('<div class="' + conf.errorMessageClass + ' alert"></div>');
|
86
|
-
setErrorMessage($message);
|
87
|
-
$message[0].inputReferer = $input[0];
|
88
|
-
$messageContainer.prepend($message);
|
89
|
-
}
|
90
|
-
}
|
91
|
-
else {
|
92
|
-
var $parent = this.getParentContainer($input);
|
93
|
-
$message = $parent.find('.' + conf.errorMessageClass + '.help-block');
|
94
|
-
|
95
|
-
if ($message.length === 0) {
|
96
|
-
$message = $('<span></span>').addClass('help-block').addClass(conf.errorMessageClass);
|
97
|
-
$message.appendTo($parent);
|
98
|
-
}
|
99
|
-
|
100
|
-
setErrorMessage($message);
|
101
|
-
}
|
102
|
-
},
|
103
|
-
setTemplateMessage: function ($form, title, errorMessages, conf) {
|
104
|
-
var messages = conf.errorMessageTemplate.messages.replace(/\{errorTitle\}/g, title),
|
105
|
-
fields = [],
|
106
|
-
container;
|
107
|
-
|
108
|
-
$.each(errorMessages, function (i, msg) {
|
109
|
-
fields.push(conf.errorMessageTemplate.field.replace(/\{msg\}/g, msg));
|
110
|
-
});
|
111
|
-
|
112
|
-
messages = messages.replace(/\{fields\}/g, fields.join(''));
|
113
|
-
container = conf.errorMessageTemplate.container.replace(/\{errorMessageClass\}/g, conf.errorMessageClass);
|
114
|
-
container = container.replace(/\{messages\}/g, messages);
|
115
|
-
$form.children().eq(0).before(container);
|
116
|
-
}
|
117
|
-
};
|
118
|
-
|
119
|
-
$.formUtils = $.extend($.formUtils || {}, {
|
120
|
-
errorDialogs: errorDialogs
|
121
|
-
});
|
122
|
-
|
123
|
-
})(jQuery);
|