Автоматический ввод Yii2 при выборе определенного элемента из выпадающего списка

У меня было 2 входа в мою форму с именами Коде Соал и Дженис Соал. Я хочу, чтобы ввод Kode Soal заполнялся автоматически, когда я выбирал определенный элемент из раскрывающегося списка Jenis Soal. Я знаю, что мне нужно включить здесь случай if, но где я должен его включить? Этот случай не связан с вызовом элемента из базы данных, я хочу просто автоматически заполнить ввод, прежде чем отправлять его.

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>

<div class="soal-form">

    <?php $form = ActiveForm::begin(); ?>

    <!-- THIS IS THE DROP DOWN LIST -->
    <?= $form->field($model, 'jenis_soal')->dropDownList([
        'pedagogik' => 'Kompetensi Pedagogik',
        'profesional' => 'Kompetensi Profesional',
        'kepribadian' => 'Aspek Kepribadian',
        'sosial' => 'Aspek Sosial'
    ], ['id' => 'jenisSoalId'])?>


    <!-- WHEN I SELECT E.G. Kompetensi Pedagogik, it should automatically filled "PED" -->

    <?php
    if(!empty($model->jenis_soal) && $model->jenis_soal == 'pedagogik') {
        $model->kode_soal = 'PED';
    }elseif($model->jenis_soal == 'profesional'){
        $model->kode_soal == 'PROF';
    }elseif($model->jenis_soal == 'kepribadian') {
        $model->kode_soal == 'KEP';
    }elseif($model->jenis_soal == 'sosial') {
        $model->kode_soal == 'SOS';
    }
    ?>

    <?= $form->field($model, 'kode_soal')->dropDownList([
        'PED' => 'PED', 'PROF' => 'PROF', 'KEP' => 'KEP', 'SOS' => 'SOS'
    ], ['id' => 'kodeSoalId'])?>

    <?= $form->field($model, 'soal')->textarea(['rows' => 6]) ?>


    <div class="form-group">
        <?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
    </div>

    <?php ActiveForm::end(); ?>

</div>

<script>
$("#jenisSoalId").change(function() {
     if($("#jenisSoalId").val() == 'pedagogik') {
         $("#kodeSoalId").val("PED");
     }
     if($("#jenisSoalId").val() == 'profesional') {
         $("#kodeSoalId").val("PROF");
     }
     if($("#jenisSoalId").val() == 'kepribadian') {
         $("#kodeSoalId").val("KEP");
     }
     if($("#jenisSoalId").val() == 'sosial') {
         $("#kodeSoalId").val("SOS");
     }
});
</script>

Когда пользователь выбирает «Kompetensi Pedagogik» в Jenis Soal, ввод Kode Soal должен автоматически заполняться текстом «PED», иначе, если выбран «Kompetensi Profesional», Kode Soal заполняется «PROF», следовательно, «Kompetensi Kepribadian» — это « КЭП" и "Компетенси Сосиал" - это "SOS"


person Athveia    schedule 26.12.2018    source источник


Ответы (1)


Попробуйте код ниже

<?php $form = ActiveForm::begin(); ?>

    <!-- THIS IS THE DROP DOWN LIST -->

    <?= $form->field($model, 'jenis_soal')->dropDownList([
        'pedagogik' => 'Kompetensi Pedagogik', 
        'profesional' => 'Kompetensi Profesional', 
        'kepribadian' => 'Aspek Kepribadian', 
        'sosial' => 'Aspek Sosial'
    ], ['id' => 'jenisSolaId']) ?>

    <!-- WHEN I SELECT E.G. Kompetensi Pedagogik, it should automatically filled "PED" here -->
    <?php if (!empty($model->jenis_soal) && $model->jenis_soal == 'pedagogik') : ?>
         <?php $model->kode_soal = 'PED'; ?>
    <?php endif; ?>

    <?= $form->field($model, 'kode_soal')->textInput(['id' => 'kodeSolaId', 'maxlength' => true]) ?>
    <?= $form->field($model, 'soal')->textarea(['rows' => 6]) ?>

<?php ActiveForm::end(); ?>

<script>
     $("#jenisSolaId").change(function() {
         if($("#jenisSolaId").val() == 'pedagogik') {
             $("#kodeSolaId").val("PED");
         }
     });
</script>
person vishuB    schedule 26.12.2018
comment
Какова функция JS Script? Я думаю, что нам нужно включить тег ‹script› перед ним. Я получил неожиданный конец файла при реализации кода. - person Athveia; 26.12.2018
comment
Это все еще не работает, я отредактировал код, теперь я включаю весь файл. Имейте в виду, что PED, PROF, KEP и SOS заранее не включены ни в какие таблицы. Я намерен заполнить поле jenis_soal значениями PED, PROF, KEP и SOS. - person Athveia; 29.12.2018