|
29 | 29 | 'use strict';
|
30 | 30 |
|
31 | 31 | var Nette = {};
|
| 32 | + var preventFiltering = {}; |
32 | 33 | var formToggles = {};
|
33 | 34 |
|
34 | 35 | Nette.formErrors = [];
|
|
120 | 121 | val = '';
|
121 | 122 | }
|
122 | 123 | }
|
123 |
| - if (filter) { |
| 124 | + if (filter && preventFiltering[elem.name] === undefined) { |
| 125 | + preventFiltering[elem.name] = true; |
124 | 126 | var ref = {value: val};
|
125 | 127 | Nette.validateControl(elem, null, true, ref);
|
126 | 128 | val = ref.value;
|
| 129 | + delete preventFiltering[elem.name]; |
127 | 130 | }
|
128 | 131 | return val;
|
129 | 132 | };
|
|
297 | 300 | };
|
298 | 301 |
|
299 | 302 |
|
300 |
| - var preventFiltering = false; |
301 |
| - |
302 | 303 | /**
|
303 | 304 | * Validates single rule.
|
304 | 305 | */
|
|
312 | 313 | op = op.replace(/\\/g, '');
|
313 | 314 |
|
314 | 315 | var arr = Array.isArray(arg) ? arg.slice(0) : [arg];
|
315 |
| - if (!preventFiltering) { |
316 |
| - preventFiltering = true; |
317 |
| - for (var i = 0, len = arr.length; i < len; i++) { |
318 |
| - if (arr[i] && arr[i].control) { |
319 |
| - var control = elem.form.elements.namedItem(arr[i].control); |
320 |
| - arr[i] = control === elem ? value.value : Nette.getEffectiveValue(control, true); |
321 |
| - } |
| 316 | + for (var i = 0, len = arr.length; i < len; i++) { |
| 317 | + if (arr[i] && arr[i].control) { |
| 318 | + var control = elem.form.elements.namedItem(arr[i].control); |
| 319 | + arr[i] = control === elem ? value.value : Nette.getEffectiveValue(control, true); |
322 | 320 | }
|
323 |
| - preventFiltering = false; |
324 | 321 | }
|
| 322 | + |
325 | 323 | return Nette.validators[op]
|
326 | 324 | ? Nette.validators[op](elem, Array.isArray(arg) ? arr : arr[0], value.value, value)
|
327 | 325 | : null;
|
|
0 commit comments