2014-06-16 3 views
0

J'ai un formulaire dans lequel se trouve un champ déroulant. Les options de la liste déroulante sont basées sur la sélection du bouton radio.Définir les options pour la liste déroulante basée sur le bouton radio sélectionner

Bouton Radio

<?php 
    $list=array("1"=>"Assign to Department","2"=>"Assign to user"); 
    echo $form->field($model, 'option')->radioList($list, 
    [ 
     'template' => '{input}{label}', // put the label behind 
    ]); 
?> 

Script

<script> 
    $('input[type=radio]').click(function(){ 

     var Flag=this.value; 
     if(Flag=='1') { 
      '<?php $items= ArrayHelper::map($company->Users, 'id', 'fullname');?>'; 
     } else if(Flag=='2') { 
      '<?php $items= ArrayHelper::map(Department::find()->all(), 'dep_id', 'name'); ?>'; 
     } 
     alert(Flag); 
    }); 
</script> 

Drodown

<?php 
    echo $form->field($model, 'assignee') 
     ->dropDownList(
      $items,   // Flat array ('id'=>'label') 
      ['prompt'=>''] // options 
     )->label(''); 
?> 

Réponse attendue est le changement des valeurs d'option selon le menu déroulant selection.But il ne change pas même bien que la valeur de l'indicateur soit différente pour les boutons radio et les modifications au clic.

Des idées?

+0

Et que le code PHP est working.I hav'nt défini les articles $ partout dans ma page autre que dans le script.Still Je ne t obtenir une erreur. –

+0

Oui, mon mauvais. Ce code va certainement fonctionner. Seulement, la variable PHP '$ items' sera définie au chargement de la page et la liste déroulante obtiendra le tableau initial. –

+1

Juste une idée - vous pouvez créer 2 tableaux javascript séparés et les définir à partir du tableau PHP. Créez une fonction javascript commune, dans la fonction onclick, passez le bouton radio sélectionné à la fonction commune. Cette fonction commune peut définir les options dans la liste déroulante en conséquence. –

Répondre

2

J'ai essayé pour un échantillon et il fonctionne -

<?php 
    $items1 = range(0, 5); //PHP Array 1 
    $items2 = range(5, 10); //PHP Array 2 
?> 

<script> 
    var arr1 = <?php echo json_encode($items1); ?>; //Javascript Array 1 
    var arr2 = <?php echo json_encode($items2); ?>; //Javascript Array 2 

    $(document).ready(function() { 
     $('input[type=radio]').click(function(){ 
      var Flag = this.value; 
      setDropdown(Flag); 
     }); 
    }); 

    function setDropdown(Flag) { 
     var elem = $('#Skill_order_no'); //Your dropdown element name. 
     if(Flag == '1') { 
      elem.empty(); 
      $.each(arr1, function(index, value) { 
       elem.append($('<option>').text(value).attr('value', value)); 
      }); 
     } else if(Flag == '2') { 
      elem.empty(); 
      $.each(arr2, function(index, value) { 
       elem.append($('<option>').text(value).attr('value', value)); 
      }); 
     } 
    } 
</script> 
+0

@ kunal..je vais certainement essayer de ne pas le faire. :-) –

+0

@ kunal..thanks..son travail! –

Questions connexes