我想在从DropDownList中选择的特定值之后显示textarea

时间:2014-01-18 14:03:26

标签: yii

我有一个问题..我的表单包含一个有很多值的下拉列表

我希望当用户从我下载的textarea中选择特定值时立即显示..我知道我将不得不使用javascript但我不知道如何

这是我的代码:

<div class="row">
    <?php echo $form->labelEx($model,'type'); ?>
    <?php echo $form->dropDownList($model,'type',$model->getTypeOptions()); ?>
    <?php echo $form->error($model,'type'); ?>
</div>

<div class="row">

    <?php echo "<b>Data</b> : <i> Use WhiteSpaces or , to enter values</i> "; ?><br/>
    <?php echo $form->textArea($model, 'data', array('rows'=>10, 'cols'=>50)); ?>
    <?php echo $form->error($model, 'data'); ?>

</div>

我希望这个textarea仅在用户选择值时显示(例如:来自下拉列表的checkboxtlist)

我搜索并发现

$form->dropDownList($model,'type',$model->getTypeOptions());

我们可以在dropDownList里面但是数组参数..但我真的不知道在这个数组中写什么令人兴奋

任何帮助?

1 个答案:

答案 0 :(得分:2)

如下所示:

<?php echo $form->dropDownList($model,'type',$model->getTypeOptions(),array('id'=>'myDropDown')); ?>

<?php echo $form->textArea($model, 'data', array('rows'=>10, 'cols'=>50,'id'=>'myTextArea')); ?>

现在,您需要创建一个Ajax请求。

<script>
$('#myDropDown').on('change', function() {
    $.ajax({
        url: "<?php echo $this->createUrl('controller/test'); ?>",
        dataType: 'html',
        type: 'POST',
        data: {dropDownValue: $(this).val()},
        success: function(data, textStatus, jqXHR) {
            $('#myTextArea').val(data);
        }‌
    });
});

请注意,test是控制器中的一个操作。(替换为您自己的名字)。

然后,创建动作:

public function actionTest() {
    if (Yii::app()->request->isAjaxRequest) {
        $dropDownValue = Yii::app()->request->getPost('dropDownValue');
        if ($dropDownValue === 'A VALUE YOU WANT TO COMPARE WITH') {
            echo 'SOME THING YOU WANT';
        }
        Yii::app()->end();
    }
}

要了解更多信息,我们说如果下拉列表的值发生更改,请调用ajax请求以便向服务器发送下拉列表值。如果我们的价值是我们想要的,我们会做点什么。最后在成功函数中,这意味着ajax成功返回响应,我们将textArea的值更改为发送给我们的服务器(测试操作)。