From c9e972ab50d8364c5d0045a53fa2a45f8f004520 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Sun, 29 Sep 2019 13:45:45 +0200 Subject: [PATCH] netteForms: preventFiltering used for getEffectiveValue() instead of validateRule() [Closes #161][Closes #143] should be better solution than 94c47d59f2 --- src/assets/netteForms.js | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/assets/netteForms.js b/src/assets/netteForms.js index 25b5ef9d9..539c3e8ec 100644 --- a/src/assets/netteForms.js +++ b/src/assets/netteForms.js @@ -29,6 +29,7 @@ 'use strict'; var Nette = {}; + var preventFiltering = {}; var formToggles = {}; Nette.formErrors = []; @@ -120,10 +121,12 @@ val = ''; } } - if (filter) { + if (filter && preventFiltering[elem.name] === undefined) { + preventFiltering[elem.name] = true; var ref = {value: val}; Nette.validateControl(elem, null, true, ref); val = ref.value; + delete preventFiltering[elem.name]; } return val; }; @@ -297,8 +300,6 @@ }; - var preventFiltering = false; - /** * Validates single rule. */ @@ -312,16 +313,13 @@ op = op.replace(/\\/g, ''); var arr = Array.isArray(arg) ? arg.slice(0) : [arg]; - if (!preventFiltering) { - preventFiltering = true; - for (var i = 0, len = arr.length; i < len; i++) { - if (arr[i] && arr[i].control) { - var control = elem.form.elements.namedItem(arr[i].control); - arr[i] = control === elem ? value.value : Nette.getEffectiveValue(control, true); - } + for (var i = 0, len = arr.length; i < len; i++) { + if (arr[i] && arr[i].control) { + var control = elem.form.elements.namedItem(arr[i].control); + arr[i] = control === elem ? value.value : Nette.getEffectiveValue(control, true); } - preventFiltering = false; } + return Nette.validators[op] ? Nette.validators[op](elem, Array.isArray(arg) ? arr : arr[0], value.value, value) : null;