Php 在Yii中如何在不刷新页面的情况下更新dropdownlist更改后的文本字段?

Php 在Yii中如何在不刷新页面的情况下更新dropdownlist更改后的文本字段?,php,jquery,ajax,yii,Php,Jquery,Ajax,Yii,我有一个Yii下拉列表和文本字段,当我选择下拉列表项时,这个名称应该显示在文本字段中。我用ajax尝试了这个概念,但它只在页面刷新后更新。我已经在这里粘贴了我的代码,请查看并建议我如何设置 每次立即选择下拉列表项后的文本字段 The following code resides protected/views/form <td> <?php echo $form->labelEx( ScriptQuestion::model(),'Fiel

我有一个Yii下拉列表和文本字段,当我选择下拉列表项时,这个名称应该显示在文本字段中。我用ajax尝试了这个概念,但它只在页面刷新后更新。我已经在这里粘贴了我的代码,请查看并建议我如何设置 每次立即选择下拉列表项后的文本字段

   The following code resides protected/views/form

    <td>    
    <?php echo $form->labelEx( ScriptQuestion::model(),'Field'); ?></td><td>
    <?php echo CHtml::activedropDownList( ScriptQuestion::model(),'crm_base_contact_form_field_id',$select_field,       
                array(
                'id' => 'send_bcfield',
                'class' => 'col_165',
                'ajax' => array(
                    'type' => 'POST',
                    'url' => CController::createUrl('DisplayMessage'),                                                               
                    'update' => '#question_editor',
                    'data' => array('bcfield' => 'js:this.value'),
                    'success'=> 'function(data) {$("#question_editor").empty();
                            $("#question_editor").val(data);
                            } ',                    
                    ))      
    ); ?>               
    </td>
         <td>
        <?php echo $form->textArea($model, 'message', array('id'=>'question_editor','maxlength'=>508, )); ?>
           </td>

不需要Ajax,它只是一个简单的javascript/jQuery

只需执行以下操作(将editor1替换为您的ckeditor实例名称):


$(“#发送bcu字段”).change(函数(){
var selected=$(“#发送#bcfield选项:selected”).val();
CKEDITOR.instances.editor1.setData(选中);
});
或者将代码更改为:

<?php
echo CHtml::activedropDownList(ScriptQuestion::model(), 'crm_base_contact_form_field_id', $select_field, array(
    'id' => 'send_bcfield',
    'class' => 'col_165',
    'onchange' => '$("#send_bcfield").change(function(){
                    var selected = $("#send_bcfield option:selected").val();
                    CKEDITOR.instances.editor1.setData(selected);
                    });',
    )
);
?>

您可能只需要将其添加到CHtml::activedropDownList设置中:

  'onchange' => "$('question_editor').val($('#send_bcfield option:selected').text())"

你必须发送ajax请求
onchange
你是说onchange而不是success?试着在
success
部分中提醒
data
,告诉我它是什么我的回答和你完全一样,但我读了问题的最后一部分,我发现OP不想在textarea中显示selectbox的确切值。他想在查询等之后更改答案。当我选择下拉列表项时,我删除了我的答案
,这个名字应该显示在文本字段中。
如果这不是真的,我不确定我应该说什么我知道,他问了一个完整的问题,我取消删除了我的答案。我尝试了这个,但不起作用。这在页面刷新后也会更改。这个文本字段id“question_editor”与CKEDITOR集成在一起。这是问题的原因吗?也许,尝试放置一个简单的文本区域,id为“问题编辑器”
是,如果我尝试简单文本区域,则在选择下拉列表项时更新此文本区域。但是我能用ckeditor做什么呢?请帮助我实现这一目标。我需要用ckeditor文本区域处理这个问题发生了什么?我没事吧,伙计?还有一件事就是如何更新这个编辑文本区。现在,在选择下一项时,setData被清除。相反,我需要在textarea中同时具有这两个值
<?php
echo CHtml::activedropDownList(ScriptQuestion::model(), 'crm_base_contact_form_field_id', $select_field, array(
    'id' => 'send_bcfield',
    'class' => 'col_165',
    'onchange' => '$("#send_bcfield").change(function(){
                    var selected = $("#send_bcfield option:selected").val();
                    CKEDITOR.instances.editor1.setData(selected);
                    });',
    )
);
?>
  'onchange' => "$('question_editor').val($('#send_bcfield option:selected').text())"