根据下拉列表选择更新textarea值

时间:2018-06-11 01:58:32

标签: yii2

我有一个名为description的动态加载下拉列表,我希望当我在该下拉列表中选择一个值时,我的echo $form->field($model, 'type_id')->dropDownList(ArrayHelper::map($types,'id','name'),['prompt'=>'Selecione a Área', 'onchange' => '???']); <?= $form->field($model, 'description')->textarea(['rows' => 8]) ?> textarea字段会更新一个值。

形式

public function actionScript($id)
{
    $types = Type::find()
            ->where(['id' => $id])
            ->One();

    return $type->script;

} 

此值将通过查询动态获取:

控制器

textarea

也就是说,在script字段中,我想在id dropdonw中向选定的type_id显示相应的TABLE `mod_helpdesk_type` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `priority` int(1) NOT NULL DEFAULT '0', `script` text NOT NULL, `active` int(11) NOT NULL, PRIMARY KEY (`id`) ); 列。

输入表格

{{1}}

3 个答案:

答案 0 :(得分:2)

它会帮助你

    echo $form->field($model, 'type_id')->dropDownList(ArrayHelper::map($types,'id','name'),['prompt'=>'Selecione a Área',
                ['class' => 'your_class', 'id' => 'your_id']
                'onchange' => '???']);

<?= $form->field($model, 'description')->textarea(['rows' => 8,'id'=>'textArea']) ?>

$('#your_id').change(function(){
    $('#textArea').val('testing');
})

答案 1 :(得分:0)

喜欢那个?

$('#<?php echo Html::getInputId($model, 'type_id'); ?>').change(function () {
    var val = $(this).val();

    $.ajax({
        url: '<?php echo Url::to('script'); ?>',
        type: 'get',
        data: {id: val},
        success: function (data) {
            $('#<?php echo Html::getInputId($model, 'description'); ?>').val(data);
        }
    });
});

答案 2 :(得分:0)

尝试onchange ajax事件

echo $form->field($model, 'type_id')->dropDownList(ArrayHelper::map($types,'id','name'),[
        'prompt'=>'Selecione a Área',
        'onchange' => '
            $.get( "yourControllerName/script&id="+$(this).val(), function( data ) {
              $( "#yourTextAreaIdElement" ).val( data );
            });
        '
  ]);

并且更好地防止请求将id传递到actionScript

public function actionScript($id)
{
    $script = '';
    if(!empty($id)) {
        $types = Type::find()
            ->where(['id' => $id])
            ->one();
        if(!empty($types)) {
            $script = $types->script;   
        }
    }
    return $script;
 }