@@ -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