Yii2:从下拉列表中选择一项时设置文本字段的值

时间:2019-03-14 10:34:04

标签: yii yii2 yii2-advanced-app yii2-basic-app

我的表单上有以下代码:

    <?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]);',
        ])
    
    ?>
    
  • 我要做的是从下拉列表中选择一个项目时,它还使用unitPrices映射设置了一个名为priceOnLine的文本字段的值,其中id是下拉列表中所选项目的值。

  • 我尝试将文本字段设置为静态值(100),它可以工作,但是我不知道如何使用地图进行设置。

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

预先感谢您的帮助:D

1 个答案:

答案 0 :(得分:0)

您需要获取所选选项的文本,您可以在视图顶部添加以下脚本,并从'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);

希望有帮助