2017-10-19 64 views
-1

我有两个select元素和一个checkbox。我试图达到的是:当我从第一个选择contry(阿尔巴尼亚让说),并按checkbox这个选项应该加载在第二个select。我正在使用kartiv Select2 widget,不知何故我无法得到它,我应该怎么做。 这是我的第一选择:Yii2 Select2 kartik-v给出复选框更改的选择值

<?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); 
          ?> 

,第二个:

<?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); 
         ?> 

而且JS对其余的元素。他们是简单的输入,所以我没有问题,他们。

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; 
     }) 
    }) 

预先感谢您!

回答

0

假设你希望从第一选择2场附加在第二场中的国家,你可以(在复选框被选中的事件),这样做:

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