2017-10-19 32 views
-1

J'ai deux éléments select et un checkbox. Ce que j'essaye d'atteindre est: Quand je choisis le premier (Albanie laisse dire) et presse le checkbox cette option devrait charger dans le deuxième select. J'utilise kartiv Select2 widget et d'une manière ou d'une autre ne peux pas l'obtenir comment devrais-je le faire. Ce mon premier sélectionner:Yii2 Select2 kartik-v donner la valeur de sélection sur le changement de case à cocher

<?php 
          $mas[33] = Yii::t('app', 'Bulgaria'); 
          $mas['----------------'] = ArrayHelper::map(Country::find()->all(), 'id', 'name'); 
          ?> 
          <?= 
          $form->field($model, 'country_id')->widget(Select2::classname(), [ 
           'model' => $model, 
           'attribute' => 'country_id', 
           'data' => $mas, 
           'options' => [ 
            'placeholder' => Yii::t('app', 'Избери държава'), 
            'class' => 'register-select', 
           ], 
           'pluginOptions' => [ 
            'allowClear' => true 
           ], 

          ])->label(false); 
          ?> 

Et le second:

<?php 
         $mas[0] = Yii::t('app', 'Главна страница'); 
         $mas['----------------'] = ArrayHelper::map(Country::find()->all(), 'id', 'name'); 
         ?> 
         <?= 
         $form->field($model, 'address_country_id')->widget(Select2::classname(), [ 
          'model' => $model, 
          'attribute' => 'address_country_id', 
          'data' => $mas, 
          'options' => [ 
           'placeholder' => Yii::t('app', 'Избери държава'), 
           'class' => 'register-select', 
          ], 
          'pluginOptions' => [ 
           'allowClear' => true 
          ], 

         ])->label(false); 
         ?> 

Et les js pour les éléments de repos. Ce sont des entrées simples donc je n'ai pas de problèmes avec eux.

JS:

$(function() { 
     $('#fill_address').on('change', function() { 

      var country = $("input[name='register-form[country_id]']");//This is the first select 
      var city = $("input[name='register-form[city]']"); 
      var address = $("input[name='register-form[delivery_address]']"); 
      var post_code = $("input[name='register-form[post_code]']"); 

      var country_delivery = $("input[name='register-form[address_country_id]']");//This is the second select which i should give the value from the first one 
      var city_delivery = $("input[name='register-form[address_city]']"); 
      var address_delivery = $("input[name='register-form[address_address]']"); 
      var postcode_delivery = $("input[name='register-form[address_post_code]']"); 

      if($(this).is(":checked")){ 
       city_delivery.val(city.val()); 
       address_delivery.val(address.val()); 
       postcode_delivery.val(post_code.val()); 
       return false; 
      } 

      city_delivery.val(''); 
      address_delivery.val(''); 
      postcode_delivery.val(''); 
      return false; 
     }) 
    }) 

Merci à l'avance!

Répondre

0

En supposant que vous voulez ajouter le pays dans le deuxième champ du premier champ Select2, vous pouvez le faire (sur événement lorsque la case est cochée):

country_delivery.append('<option value="' + country.val() + '">' + country.text() + '</option>');