dqs-jquery-form-validator-rails 2.2.8 → 2.2.163p1

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.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -37
  3. data/app/assets/javascripts/brazil.dev.js +115 -0
  4. data/app/assets/javascripts/brazil.js +9 -0
  5. data/app/assets/javascripts/date.dev.js +81 -0
  6. data/app/assets/javascripts/date.js +9 -0
  7. data/app/assets/javascripts/file.dev.js +413 -0
  8. data/app/assets/javascripts/file.js +9 -0
  9. data/app/assets/javascripts/html5.dev.js +168 -0
  10. data/app/assets/javascripts/html5.js +9 -0
  11. data/app/assets/javascripts/jquery.form-validator.min.js +9 -0
  12. data/app/assets/javascripts/jsconf.dev.js +55 -0
  13. data/app/assets/javascripts/jsconf.js +9 -0
  14. data/app/assets/javascripts/lang/cz.dev.js +65 -0
  15. data/app/assets/javascripts/lang/cz.js +9 -0
  16. data/app/assets/javascripts/lang/de.dev.js +65 -0
  17. data/app/assets/javascripts/lang/de.js +9 -0
  18. data/app/assets/javascripts/lang/es.dev.js +62 -0
  19. data/app/assets/javascripts/lang/es.js +9 -0
  20. data/app/assets/javascripts/lang/fr.dev.js +62 -0
  21. data/app/assets/javascripts/lang/fr.js +9 -0
  22. data/app/assets/javascripts/lang/it.dev.js +62 -0
  23. data/app/assets/javascripts/lang/it.js +9 -0
  24. data/app/assets/javascripts/lang/pl.dev.js +65 -0
  25. data/app/assets/javascripts/lang/pl.js +9 -0
  26. data/app/assets/javascripts/lang/pt.dev.js +65 -0
  27. data/app/assets/javascripts/lang/pt.js +9 -0
  28. data/app/assets/javascripts/lang/ro.dev.js +65 -0
  29. data/app/assets/javascripts/lang/ro.js +9 -0
  30. data/app/assets/javascripts/lang/ru.dev.js +66 -0
  31. data/app/assets/javascripts/lang/ru.js +9 -0
  32. data/app/assets/javascripts/lang/sv.dev.js +63 -0
  33. data/app/assets/javascripts/lang/sv.js +9 -0
  34. data/app/assets/javascripts/location.dev.js +78 -0
  35. data/app/assets/javascripts/location.js +9 -0
  36. data/app/assets/javascripts/sanitize.dev.js +154 -0
  37. data/app/assets/javascripts/sanitize.js +9 -0
  38. data/app/assets/javascripts/security.dev.js +523 -0
  39. data/app/assets/javascripts/security.js +9 -0
  40. data/app/assets/javascripts/src/core-validators.js +343 -0
  41. data/app/assets/javascripts/src/dialogs.js +123 -0
  42. data/app/assets/javascripts/src/jquery-plugins.js +452 -0
  43. data/app/assets/javascripts/src/module-loader.js +150 -0
  44. data/app/assets/javascripts/src/setup.js +168 -0
  45. data/app/assets/javascripts/src/utils.js +840 -0
  46. data/app/assets/javascripts/sweden.dev.js +213 -0
  47. data/app/assets/javascripts/sweden.js +9 -0
  48. data/{vendor/assets/javascripts/dqs-jquery-form-validator → app/assets/javascripts}/theme-default.css +1 -0
  49. data/app/assets/javascripts/theme-default.min.css +1 -0
  50. data/app/assets/javascripts/toggleDisabled.dev.js +67 -0
  51. data/app/assets/javascripts/toggleDisabled.js +9 -0
  52. data/app/assets/javascripts/uk.dev.js +85 -0
  53. data/app/assets/javascripts/uk.js +9 -0
  54. data/lib/dqs/jquery/form/validator/rails/version.rb +1 -1
  55. metadata +56 -37
  56. data/vendor/assets/javascripts/dqs-jquery-form-validator/brazil.js +0 -9
  57. data/vendor/assets/javascripts/dqs-jquery-form-validator/date.js +0 -9
  58. data/vendor/assets/javascripts/dqs-jquery-form-validator/file.js +0 -9
  59. data/vendor/assets/javascripts/dqs-jquery-form-validator/html5.js +0 -9
  60. data/vendor/assets/javascripts/dqs-jquery-form-validator/jquery.form-validator.js +0 -2108
  61. data/vendor/assets/javascripts/dqs-jquery-form-validator/jquery.form-validator.min.js +0 -9
  62. data/vendor/assets/javascripts/dqs-jquery-form-validator/jsconf.js +0 -9
  63. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/ca.js +0 -9
  64. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/cz.js +0 -9
  65. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/de.js +0 -9
  66. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/dk.js +0 -9
  67. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/es.js +0 -9
  68. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/fr.js +0 -9
  69. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/it.js +0 -9
  70. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/nl.js +0 -9
  71. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/no.js +0 -9
  72. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/pl.js +0 -9
  73. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/pt.js +0 -9
  74. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/ro.js +0 -9
  75. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/ru.js +0 -9
  76. data/vendor/assets/javascripts/dqs-jquery-form-validator/lang/sv.js +0 -9
  77. data/vendor/assets/javascripts/dqs-jquery-form-validator/location.js +0 -9
  78. data/vendor/assets/javascripts/dqs-jquery-form-validator/logic.js +0 -9
  79. data/vendor/assets/javascripts/dqs-jquery-form-validator/poland.js +0 -9
  80. data/vendor/assets/javascripts/dqs-jquery-form-validator/sanitize.js +0 -9
  81. data/vendor/assets/javascripts/dqs-jquery-form-validator/security.js +0 -9
  82. data/vendor/assets/javascripts/dqs-jquery-form-validator/sepa.js +0 -9
  83. data/vendor/assets/javascripts/dqs-jquery-form-validator/sweden.js +0 -9
  84. data/vendor/assets/javascripts/dqs-jquery-form-validator/theme-default.min.css +0 -1
  85. data/vendor/assets/javascripts/dqs-jquery-form-validator/toggleDisabled.js +0 -9
  86. data/vendor/assets/javascripts/dqs-jquery-form-validator/uk.js +0 -9
@@ -0,0 +1,343 @@
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);
@@ -0,0 +1,123 @@
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);