@@ -386,7 +386,7 @@ define([
386
386
* @param {Object } config
387
387
*/
388
388
initialize : function ( elementsMap , config ) {
389
- var idTo , idFrom ;
389
+ var idTo , idFrom , values , fromId , radioFrom ;
390
390
391
391
if ( config ) {
392
392
this . _config = config ;
@@ -400,10 +400,21 @@ define([
400
400
'change' ,
401
401
this . trackChange . bindAsEventListener ( this , idTo , elementsMap [ idTo ] )
402
402
) ;
403
- this . trackChange ( null , idTo , elementsMap [ idTo ] ) ;
404
403
} else {
405
- this . trackChange ( null , idTo , elementsMap [ idTo ] ) ;
404
+ // Check if radio button
405
+ values = elementsMap [ idTo ] [ idFrom ] . values ;
406
+ fromId = $ ( idFrom + values [ 0 ] ) ;
407
+ radioFrom = fromId ? $$ ( '[name="' + fromId . name + '"]' ) : false ;
408
+
409
+ if ( radioFrom ) {
410
+ radioFrom . invoke (
411
+ 'on' ,
412
+ 'change' ,
413
+ this . trackChange . bindAsEventListener ( this , idTo , elementsMap [ idTo ] )
414
+ ) ;
415
+ }
406
416
}
417
+ this . trackChange ( null , idTo , elementsMap [ idTo ] ) ;
407
418
}
408
419
}
409
420
} ,
@@ -428,7 +439,7 @@ define([
428
439
// define whether the target should show up
429
440
var shouldShowUp = true ,
430
441
idFrom , from , values , isInArray , isNegative , headElement , isInheritCheckboxChecked , target , inputs ,
431
- isAnInputOrSelect , currentConfig , rowElement ;
442
+ isAnInputOrSelect , currentConfig , rowElement , fromId , radioFrom ;
432
443
433
444
for ( idFrom in valuesFrom ) { //eslint-disable-line guard-for-in
434
445
from = $ ( idFrom ) ;
@@ -441,6 +452,17 @@ define([
441
452
if ( ! from || isInArray && isNegative || ! isInArray && ! isNegative ) {
442
453
shouldShowUp = false ;
443
454
}
455
+ // Check if radio button
456
+ } else {
457
+ values = valuesFrom [ idFrom ] . values ;
458
+ fromId = $ ( idFrom + values [ 0 ] ) ;
459
+ radioFrom = fromId ? $$ ( '[name="' + fromId . name + '"]:checked' ) : [ ] ;
460
+ isInArray = radioFrom . length > 0 && values . indexOf ( radioFrom [ 0 ] . value ) !== - 1 ;
461
+ isNegative = valuesFrom [ idFrom ] . negative ;
462
+
463
+ if ( ! radioFrom || isInArray && isNegative || ! isInArray && ! isNegative ) {
464
+ shouldShowUp = false ;
465
+ }
444
466
}
445
467
}
446
468
0 commit comments