Skip to content

Commit 841e5de

Browse files
committed
netteForms.js: refactoring
1 parent 94c47d5 commit 841e5de

File tree

1 file changed

+13
-21
lines changed

1 file changed

+13
-21
lines changed

src/assets/netteForms.js

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,18 @@
124124
/**
125125
* Returns the effective value of form element.
126126
*/
127-
Nette.getEffectiveValue = function(elem) {
127+
Nette.getEffectiveValue = function(elem, filter) {
128128
var val = Nette.getValue(elem);
129129
if (elem.getAttribute) {
130130
if (val === elem.getAttribute('data-nette-empty-value')) {
131131
val = '';
132132
}
133133
}
134+
if (filter) {
135+
var ref = {value: val};
136+
Nette.validateControl(elem, null, true, ref);
137+
val = ref.value;
138+
}
134139
return val;
135140
};
136141

@@ -162,8 +167,7 @@
162167
}
163168

164169
curElem = curElem.tagName ? curElem : curElem[0]; // RadioNodeList
165-
var curValue = elem === curElem ? value : {value: Nette.getEffectiveValue(curElem)},
166-
success = Nette.validateRule(curElem, rule.op, rule.arg, curValue);
170+
var success = Nette.validateRule(curElem, rule.op, rule.arg, elem === curElem ? value : undefined);
167171

168172
if (success === null) {
169173
continue;
@@ -306,27 +310,13 @@
306310
};
307311

308312

309-
/**
310-
* Expand rule argument.
311-
*/
312-
Nette.expandRuleArgument = function(form, arg) {
313-
if (arg && arg.control) {
314-
var control = form.elements.namedItem(arg.control),
315-
value = {value: Nette.getEffectiveValue(control)};
316-
Nette.validateControl(control, null, true, value);
317-
arg = value.value;
318-
}
319-
return arg;
320-
};
321-
322-
323313
var preventFiltering = false;
324314

325315
/**
326316
* Validates single rule.
327317
*/
328318
Nette.validateRule = function(elem, op, arg, value) {
329-
value = value === undefined ? {value: Nette.getEffectiveValue(elem)} : value;
319+
value = value === undefined ? {value: Nette.getEffectiveValue(elem, true)} : value;
330320

331321
if (op.charAt(0) === ':') {
332322
op = op.substr(1);
@@ -338,7 +328,10 @@
338328
if (!preventFiltering) {
339329
preventFiltering = true;
340330
for (var i = 0, len = arr.length; i < len; i++) {
341-
arr[i] = Nette.expandRuleArgument(elem.form, arr[i]);
331+
if (arr[i] && arr[i].control) {
332+
var control = elem.form.elements.namedItem(arr[i].control);
333+
arr[i] = control === elem ? value.value : Nette.getEffectiveValue(control, true);
334+
}
342335
}
343336
preventFiltering = false;
344337
}
@@ -590,8 +583,7 @@
590583
if (success !== false) {
591584
rule.neg = op[1];
592585
rule.op = op[2];
593-
var curValue = elem === curElem ? value : {value: Nette.getEffectiveValue(curElem)};
594-
curSuccess = Nette.validateRule(curElem, rule.op, rule.arg, curValue);
586+
curSuccess = Nette.validateRule(curElem, rule.op, rule.arg, elem === curElem ? value : undefined);
595587
if (curSuccess === null) {
596588
continue;
597589

0 commit comments

Comments
 (0)