如何在Yii框架中选择下拉列表时更新CKEDITOR文本框

时间:2014-01-27 07:08:02

标签: php yii

我在Yii中有CActiveForm,我在这里显示了一个下拉列表和ckeditor消息框。当我选择下拉列出项目中的任何一个时,该名称应显示在消息框中。(即,在事件/选择下拉列表时它(所选项目的名称)也应显示在消息框中)。在Yii有没有办法做到这一点。请帮忙实现这个目标? 以下代码位于protected / views / form

    <?php echo CHtml::activedropDownList( ScriptQuestion::model(),'crm_base_contact_form_field_id',$select_field); ?>

    <?php echo $form->textArea($model, 'message', array('id'=>'question_editor','maxlength'=>508, )); ?>

    <script src="<?php echo Yii::app()->baseUrl.'/assets/ckeditor/ckeditor.js'; ?>"></script> 
    <script type="text/javascript">
    CKEDITOR.replace( 'question_editor', {   toolbar:'MA', height:'100px',width: '700px'  }  );
</script>

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以创建CHtml::textfield并在下拉列表ajax上更新文本字段。

从此link

  

首先,您可以创建国家/地区下拉列表并调用ajax

<?php
                echo CHtml::dropDownList('country_name', '', CHtml::listData(Country::model()->findAll('status!="2"'), 'id', 'venue_name'), array(
                    'id' => 'send_venue',
                    'prompt' => 'Select Venue',
                    'class' => 'col_165',
                    'ajax' => array(
                        'type' => 'POST',
                        'url' => CController::createUrl('Getprovince'),
                        'update' => '#county_name',
                        'data' => array('county_id' => 'js:this.value'),
                        )));
                ?>
  

并创建div

<div id="#county_name"></div>
  

然后在控制器上创建Getprovince函数

public function actionGetprovince($id){
                 $county_id=$_POST['county_id'];
                $data=Provinces::model()->findAll("county_id='".$county_id."' AND status='1'");
                $data=CHtml::listData($data,'id','provinces_name');
                echo "<option value=''>Select Event</option>";
                foreach($data as $value=>$event_name){
                        echo CHtml::tag('option', array('value'=>$value),CHtml::encode($event_name),true);
                }
}
  

更多参考   http://www.yiiframew...ist-using-ajax/

我希望这会有所帮助。

答案 1 :(得分:0)

以下代码有助于为我归档此概念。

将以下代码放在CActiveForm小部件

中的protected / views / forms中
     <?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();
                            var selected = $("#question_editor").val(data);
                            CKEDITOR.instances.question_editor.setData(selected);
                            } ',

                'error'=> 'function(){alert("AJAX call error..!!!!!!!!!!");}'                
                    ),

                    )       
    ); ?>   

        <?php echo $form->textArea($model, 'message', array('id'=>'question_editor','maxlength'=>508, )); ?>

    <script type="text/javascript">
CKEDITOR.replace( 'question_editor', {   toolbar:'MA', height:'100px',width: '700px'  }  );
    </script>

这是控制器操作:

      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 CJSON::encode($result);
    echo "%".$result."%";
    $this->performAjaxValidation($model);       

}