당신이 할하려고하고 실제로 매우 간단하고, YII의 jQuery를 캡슐화 덕분에, 당신은 JQuery와에 대해 걱정할 필요가 없습니다 암호. 참조는 다음과 같습니다. http://www.yiiframework.com/wiki/24/creating-a-dependent-dropdown#hh0 어쨌든, 어떻게하는지 보여 드리겠습니다. 그러나 내가 당신에게 질문하기 전에 :이 코드 줄은 : array('onChange' => 'javascript:description()')
이 문제를 해결하려는 시도였습니까? 아니면이 주제와 관련없는 다른 기능이 있습니까? 문제를 해결하려는 시도의 일부인 경우 삭제하십시오. 그럴 필요 없어. 전에 말했듯이 실제 jquery 코드에 대해 걱정할 필요가 없습니다. Yii에 잘 캡슐화되어 있습니다. 다른 방법으로,이 주제와 관련이 없다면, 물론 그것이 어디에 있는지 알려주십시오.
이제 아약스 업데이트에 대해 알아보십시오. 먼저 모두 텍스트 상자가 표시 될 div가 필요합니다. description_id div를 사용하겠습니다. 당신은 우리가 아약스 요청을 트리거 할 때 호출되는 함수를 지정 아약스 선언의 'URL'속성 것을 알 수 있습니다
<?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>
다음() 그런 다음, 아약스 요청은 드롭 다운리스트 내에서 지정됩니다. 'update'속성에서 우리는 div를 지정했는데 where는 url 속성에 지정된 함수를 호출 한 결과를 표시합니다.
마지막으로해야할 일은 actionWhichEchoesTheTextBox() 액션을 선언하는 것입니다. 모든 컨트롤러에서 선언 할 수 있지만 현재 컨트롤러에없는 경우 정적 메서드로 선언해야 여기에 액세스 할 수 있습니다. 어떤 문제를 방지 할 수 있도록, 현재 컨트롤러를 선언해야하며, 그것은 다음과 같이 보일 것입니다 :
public function actionWhichEchoesTheTextBox()
{
if($_POST['ModelName']['status']===0)
echo CHtml::textField("ModelName", 'description'/*attribute name*/) ;
}
을 그리고 그것 뿐이다.