2015-07-02 5 views
0

У меня есть 3 зависимых выпадающих списка, а текстовое поле зависит от последнего выпадающего списка. Если одно из значений в последнем раскрывающемся списке, я хочу, чтобы значение текстового поля динамически менялось в зависимости от выбранного значения (оно из той же таблицы базы данных).Невозможно обновить текстовое поле на основе раскрывающегося списка Yii

Это вид третьего выпадающего списка:

<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> 

Это мнение TextField:

<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; 
    } 

Но он не работает в течение нескольких дней. Я не знаю, какую часть я пропустил. Я предполагаю, что выпадающее окно является зависимым выпадающим списком, расположенным над ним. Поэтому я, должно быть, пропустил какую-то часть.

Любая помощь очень ценится.

UPDATE: После нескольких дней поисков, наконец, получил его:

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)); 
    } 

ответ

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); 
            }' 
        ) 
       ) 
      ); 
+0

Спасибо. Но это, похоже, не работает. Ничего не происходит, и никаких ошибок не видно. – Safira

+0

Кажется, что ваш раскрывающийся список пуст –

+0

посмотреть ваш запрос: Chrome - dev tools - сеть. Куда он идет и что такое ответ. И это работает для меня так лок для ошибки. – ineersa

Смежные вопросы