Yii2 - выбирается раскрывающийся список и устанавливается значение для поля ввода

У меня есть это, на мой взгляд (_form.php).

<div>
        <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $("#pilih_dulu").change(function(){
                    $(this).find("option:selected").each(function(){
                        if($(this).attr("value")=="1"){
                            $(".box").not(".1").hide();
                            $(".1").show();
                        }

                        else if($(this).attr("value")=="2"){
                            $(".box").not(".2").hide();
                            $(".2").show();
                        }

                        else if($(this).attr("value")=="3"){
                            $(".box").not(".3").hide();
                            $(".3").show();
                        }

                        else{
                            $(".box").hide();
                        }
                    });
                }).change();
            });
        </script>
    </div>

    <div class = "col-lg-4">
        <?= $form->field($model, 'kat_id')->label(true)->dropDownList(
            ArrayHelper::map(TblKategori::find()->all(),'kat_id','kat_kategori'), ['id' => 'pilih_dulu']
        ) ?>
    </div>

    <div class="1 box col-lg-4">
        <?= $form->field($model, 'sok_id')->textInput(['value' => 1]) ?>
    </div>

    <div class="2 box col-lg-4">
        <?= $form->field($model, 'sok_id')->textInput(['value' => 2]) ?>
    </div>

    <div class="3 box col-lg-4">
        <?= $form->field($model, 'sok_id')->textInput(['value' => 2]) ?>
    </div>

Проблема в том, что он не хранит правильное значение. Кажется, что он всегда хранит значение в последнем поле.

Предполагается, что он работает следующим образом:

  1. если значение 1 выбрано из выпадающего списка, оно должно хранить значение для sok_id в «1 поле».

  2. если значение 2 выбрано из выпадающего списка, оно должно хранить значение для sok_id в «поле 2».

  3. если значение 3 выбрано из выпадающего списка, оно должно хранить значение для sok_id в «поле 3».

пожалуйста, помогите мне. благодарю вас


person NoBody    schedule 27.06.2016    source источник
comment
Я не могу видеть, где вы храните.   -  person Nana Partykar    schedule 27.06.2016
comment
Процесс заключается в том, что при выборе выпадающего списка значение отправляется в функцию изменения в теге ‹script›. Например, если выбрано значение 1, отображается div с полем класса 1, а поле ввода для sok_id установлено на 1. Проблема в том, что значение, сохраненное для sok_id, равно 2, что, как я думаю, из поля ввода в поле div 3. Извините за мой плохой английский. я надеюсь, вы понимаете, что я имею в виду   -  person NoBody    schedule 27.06.2016


Ответы (1)


Если я правильно понял, вы можете сделать это простым способом:

<div class = "col-lg-4">
   <?= $form->field($model, 'kat_id')->label(true)->dropDownList(
      ArrayHelper::map(TblKategori::find()->all(),'kat_id','kat_kategori'), ['id' => 'pilih_dulu', 'onchange' => 'if($(this).val() == 1) {
                        $("#'.Html::getInputId($model, 'sok_id').'").val($(this).val());
                    }
                    else if($(this).val() == 2) {
                        $("#'.Html::getInputId($model, 'sok_id').'").val($(this).val());
                    } else if($(this).val() == 3){
                        $("#'.Html::getInputId($model, 'sok_id').'").val($(this).val());
                    }'
   ']) ?>
</div>

 <div class="box col-lg-4">
    <?= $form->field($model, 'sok_id')->textInput() ?>
</div>

Нет необходимости в 3 полях, и да, добавьте методы show() и hide(), где это необходимо.

person Insane Skull    schedule 27.06.2016