Skip to content

Commit 3790302

Browse files
committed
netteForms.js: toggle handlers are added on body
1 parent 4e0e9e2 commit 3790302

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/assets/netteForms.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,6 @@ Nette.toggleControl = function(elem, rules, success, firsttime, value) {
431431
value = value === undefined ? {value: Nette.getEffectiveValue(elem)} : value;
432432

433433
var has = false,
434-
handled = [],
435434
handler = function () {
436435
Nette.toggleForm(elem.form, elem);
437436
},
@@ -471,9 +470,11 @@ Nette.toggleControl = function(elem, rules, success, firsttime, value) {
471470
els = curElem.tagName ? curElem.form.elements : curElem;
472471

473472
for (var i = 0; i < els.length; i++) {
474-
if (els[i].name === name && !Nette.inArray(handled, els[i])) {
475-
Nette.addEvent(els[i], oldIE && els[i].type in {checkbox: 1, radio: 1} ? 'click' : 'change', handler);
476-
handled.push(els[i]);
473+
if (els[i].name === name) {
474+
if (oldIE && !els[i]['nette-toggleForm']) { // change event fails to bubble in IE < 9
475+
Nette.addEvent(els[i], els[i].type in {checkbox: 1, radio: 1} ? 'click' : 'change', handler);
476+
}
477+
els[i]['nette-toggleForm'] = true;
477478
}
478479
}
479480
}
@@ -550,6 +551,12 @@ Nette.initOnLoad = function() {
550551
target.form['nette-submittedBy'] = target;
551552
}
552553
});
554+
555+
Nette.addEvent(document.body, 'change', function(e) {
556+
if (e.target['nette-toggleForm']) {
557+
Nette.toggleForm(e.target.form, e.target);
558+
}
559+
});
553560
});
554561
};
555562

0 commit comments

Comments
 (0)