我有一个问题..我的表单包含一个有很多值的下拉列表
我希望当用户从我下载的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里面但是数组参数..但我真的不知道在这个数组中写什么令人兴奋
任何帮助?
答案 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的值更改为发送给我们的服务器(测试操作)。