无法根据下拉列表Yii更新文本字段

时间:2015-07-02 02:57:40

标签: php jquery drop-down-menu yii

我有3个依赖的下拉列表,并且文本字段依赖于最后一个下拉列表。如果最后一个下拉列表中的某个值,我希望textfield值根据所选值(它来自同一个Database表)动态更改。

这是第三次下拉列表的视图:

 <div class="row" id="id_subkeg">
       <?php echo $form->labelEx($model, 'id_subkeg'); ?>                    
       <?php
            echo $form->dropDownList($model, 'id_subkeg', array(), array(
                'style' => 'width: 100%',
                    'ajax' => array(
                        'type' => 'POST',
                        'url' => CController::createUrl('dynamicSatuan'),
                        'update' => '#' . CHtml::activeId($model, 'satuan'),
                        //'update'=>'#seksi',
                        'data' => array('id_subkeg' => 'js:this.value'),
                    )
                )
            );
       ?>
       <?php echo $form->error($model, 'id_subkeg'); ?>                       
</div>

这是文本视图:

<div class="row" id="satuan">
      <?php echo $form->labelEx($model, 'satuan'); ?>
      <p class="hint" style="font-size: 80%">Contoh: Dokumen.</p>
      <?php echo $form->textField($model, 'satuan', array('style' => 'width: 98%;', 'readonly' => FALSE)); ?>
      <?php echo $form->error($model, 'satuan'); ?>
</div>

这是控制器中的动作:

public function actionDynamicSatuan() {
        //$data = Subkegiatan::model()->findByPk($_POST['id_subkeg']);        
        $data = Subkegiatan::model()->findByPk('id_subkeg=:id_subkeg', array(':id_subkeg' => (int) $_POST['id_subkeg']));        
        echo $data->satuan;
    }

但它已经好几天没有工作了。我不知道我错过了哪一部分。我的猜测是,下拉是对其上方的下降。所以我一定错过了某些部分。

非常感谢任何帮助。

更新 经过几天的搜索,终于明白了:

 public function actionDynamicSatuan() {
        $param_country = (int) $_POST['id_subkeg'];
        $maxOrderNumber = Yii::app()->db->createCommand()
                ->select('satuan')
                ->from('subkegiatan')
                ->where('id_subkeg = ' . $param_country)
                ->queryScalar();
        echo '<b>SATUAN: '. $maxOrderNumber.'</b>';
        //echo CHtml::tag('input', array('type' => 'text', 'value' => $maxOrderNumber));
    }

1 个答案:

答案 0 :(得分:0)

使用成功回调:

而不是更新
echo $form->dropDownList($model, 'id_subkeg', array(), array(
                'style' => 'width: 100%',
                    'ajax' => array(
                        'type' => 'POST',
                        'url' => CController::createUrl('dynamicSatuan'),
                        'data' => array('id_subkeg' => 'js:this.value'),
                        'success'=> 'function(data) {
                                        $("#your_id_here").empty();
                                        $("#your_id_here").append(data);
                                    }'
                    )
                )
            );