Skip to content

Commit 8a7bedf

Browse files
committed
netteForms.js: fixed bug in toggleControl, episode II. [Closes #67]
1 parent c3006dc commit 8a7bedf

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

src/assets/netteForms.js

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,8 @@ Nette.toggleControl = function(elem, rules, success, firsttime, value) {
420420
handled = [],
421421
handler = function () {
422422
Nette.toggleForm(elem.form, elem);
423-
};
423+
},
424+
curSuccess;
424425

425426
for (var id = 0, len = rules.length; id < len; id++) {
426427
var rule = rules[id],
@@ -431,20 +432,24 @@ Nette.toggleControl = function(elem, rules, success, firsttime, value) {
431432
continue;
432433
}
433434

435+
curSuccess = success;
434436
if (success !== false) {
435437
rule.neg = op[1];
436438
rule.op = op[2];
437-
var curValue = elem === curElem ? value : {value: Nette.getEffectiveValue(curElem)},
438-
res = Nette.validateRule(curElem, rule.op, rule.arg, curValue);
439-
if (res === null) {
439+
var curValue = elem === curElem ? value : {value: Nette.getEffectiveValue(curElem)};
440+
curSuccess = Nette.validateRule(curElem, rule.op, rule.arg, curValue);
441+
if (curSuccess === null) {
440442
continue;
441443

442-
} else if (!rule.rules) {
443-
success = rule.neg ? !res : res;
444+
} else if (rule.neg) {
445+
curSuccess = !curSuccess;
446+
}
447+
if (!rule.rules) {
448+
success = curSuccess;
444449
}
445450
}
446451

447-
if ((rule.rules && Nette.toggleControl(elem, rule.rules, success, firsttime, value)) || rule.toggle) {
452+
if ((rule.rules && Nette.toggleControl(elem, rule.rules, curSuccess, firsttime, value)) || rule.toggle) {
448453
has = true;
449454
if (firsttime) {
450455
var oldIE = !document.addEventListener, // IE < 9
@@ -459,7 +464,7 @@ Nette.toggleControl = function(elem, rules, success, firsttime, value) {
459464
}
460465
for (var id2 in rule.toggle || []) {
461466
if (Object.prototype.hasOwnProperty.call(rule.toggle, id2)) {
462-
Nette.toggles[id2] = Nette.toggles[id2] || (rule.toggle[id2] ? success : !success);
467+
Nette.toggles[id2] = Nette.toggles[id2] || (rule.toggle[id2] ? curSuccess : !curSuccess);
463468
}
464469
}
465470
}

0 commit comments

Comments
 (0)