То, что вы пытаетесь сделать, на самом деле довольно просто, и, благодаря инкапсуляции JQuery в Yii, вам не нужно беспокоиться о коде jquery. Вот ссылка: http://www.yiiframework.com/wiki/24/creating-a-dependent-dropdown#hh0 В любом случае, позвольте мне показать вам, как это сделать. Но перед тем, как у меня возникнет вопрос: эта строка кода: array( 'onChange' => 'javascript:description()' )
была вашей попыткой решить эту проблему? Или у него есть другой функционал, не связанный с этой темой? Если это часть вашей попытки решить проблему, просто удалите ее. Вам это не понадобится. Как я уже говорил ранее, вам не нужно беспокоиться о реальном коде jquery, он хорошо инкапсулирован в Yii. Иначе, если это не связано с этой темой, пусть, конечно, там, где она есть.
Теперь об обновлении ajax. Прежде всего, нам нужен div, где будет отображаться текстовое поле; Я буду использовать описание. Затем в раскрывающемся списке () указывается ajax-запрос следующим образом:
<?php echo $form->labelEx($model,'status'); ?>
<?php echo $form->dropDownList($model,'status',
array('0' =>'In active', '1'=> 'Active'),
array( 'onChange' => 'javascript:description()',
'ajax'=>array(
'type'=>'POST',
'url'=>CController::createUrl('YourController/actionWhichEchoesTheTextBox'),
'update'=>'#description_id',
)));
?>
<div id="description_id">
</div>
Вы можете заметить, что в атрибуте 'url' объявления ajax мы указали функцию, которая будет вызываться при срабатывании запроса ajax. В атрибуте «update» мы указали div, где будет отображаться результат вызова функции, указанной в атрибуте url.
Наконец, все, что осталось сделать, это объявить действие actionWhichEchoesTheTextBox (). Его можно объявить в любом контроллере, но если его нет в текущем контроллере, то вы должны объявить его как статический метод, чтобы сделать его доступным здесь. Поэтому, чтобы избежать каких-либо проблем, вы должны объявить это в текущем контроллере, и это будет выглядеть примерно так:
public function actionWhichEchoesTheTextBox()
{
if($_POST['ModelName']['status']===0)
echo CHtml::textField("ModelName", 'description'/*attribute name*/) ;
}
И это все.