php - 如何在 Yii 中不刷新页面的情况下更新下拉列表更改时的文本字段?

标签 php jquery ajax yii

我有一个 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>

这是 Controller Action :

    public function actionDisplayMessage(){ 
$q = $_POST['bcfield'];
$model=ScriptQuestion::model()->findAll();  
$sql = "SELECT name  FROM crm_field WHERE crm_field_id=". $q ;
    $command = Yii::app()->db->createCommand($sql);
    $result= $command->queryScalar(); 
    echo "%".$result."%";
    $this->performAjaxValidation($model);       
    }

最佳答案

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

只需这样做(将 editor1 替换为您的 ckeditor 实例名称):

<script>
$("#send_bcfield").change(function(){
   var selected = $("#send_bcfield option:selected").val();
   CKEDITOR.instances.editor1.setData(selected);
});
</script>

或者将您的代码更改为:

<?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);
                    });',
    )
);
?>

更新:根据您在我的回答下方的评论,我将代码更改为更改 ckeditor 值

关于php - 如何在 Yii 中不刷新页面的情况下更新下拉列表更改时的文本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21397970/

相关文章:

php - 限制 foreach 只显示 10 行数据?

PHP $_FILES 相同的图像名称

php - 单个实体的 Doctrine2 自定义水化器

javascript - 进入和离开时使用 jQuery 的 CSS 动画

javascript - 导航栏轮播元素背景颜色

javascript - Ajax 正在缓存表单 onclick 的先前输出

php - HTMLPurifier iframe Vimeo 和 Youtube 视频

jQuery 切换类

javascript - 如何通过 AJAX 将 ID 发送到另一个文件并在该文件中使用该 ID

javascript - 如何根据 ajax 成功创建 Stripe token 的条件