Yii2: установить значение текстового поля при выборе элемента из выпадающего списка - PullRequest
0 голосов
/ 14 марта 2019

У меня есть следующий код в моей форме:

    <?php
     $unitPrices = ArrayHelper::map(Item::find()->where('isApproved and 
     vendor_id=:id', [':id' => $vendorId])->all(),'id','unitPrice'); 
    ?>
  • это дает мне карту с именем unitPrices, где соединение ключ-значение равно id-unitPrice

    <?= $form->field($model, 'item_id')->dropDownList(
    ArrayHelper::map(Item::find()->where('isApproved and vendor_id=:id', [':id' => $vendorId])->all(),'id','itemCode','description'), 
    
        [   
    
            'prompt'=>'--Select Item--',
    
            'id'=>'item_selected',
    
            'onchange' => '$("#priceOnLine").val($unitPrices[item_id_value]);',
        ])
    
    ?>
    
  • то, что я хочу сделать, это когда элемент выбран из выпадающего списка, он также устанавливает значение текстового поля с именем priceOnLine, используя карту unitPrices, где id - это значение выбранного элемента извыпадающий список.

  • Я попытался установить для текстового поля статическое значение (100), и оно работает, но я не могу понять, как установить его с помощью карты.

    'onchange' => '$("#priceOnLine").val(100);',
    

Заранее спасибо за помощь: D

1 Ответ

0 голосов
/ 14 марта 2019

Вам нужно получить текст выбранной опции, вы можете добавить следующий скрипт в верхней части вашего представления и удалить 'onchange' => '$("#priceOnLine").val($unitPrices[item_id_value]);', из вашего dropDown()

<?php 

$js=<<<JS
    $("#item_selected").on("change",function(){
       $("#priceOnLine").val(($(this).find("option:selected").text()));
    });
JS;

$this->registerJs($js,\yii\web\View::POS_READY);

Надеюсь, это поможет

...