我的表单上有以下代码:
<?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
答案 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);
希望有帮助