我是yii的新手,所以不要严格。 我有来自模型的国家/州的依赖下拉列表。它是完美的,直到选择jquery插件。 我使用http://harvesthq.github.com/chosen/。 所以问题在于如何触发liszt:更新,所以第二次选择可以从标准选择中获取数据。 这是制作该列表的视图代码。
if ($field->varname=='country') {
echo $form->dropDownList($profile, $field->varname,CHtml::listData(Countries::model()->findAll(),'short','title'), array(
'class'=>"chzn-select",
'empty'=>"Select country",
'ajax' => array(
'type' => 'POST',
'url'=>$this->createUrl('registration/state'),
'update' => '#Profile_state',
'data'=>array('country'=>'js:this.value',),
)));
}
elseif($field->varname=='state') {
echo $form->dropDownList($profile, $field->varname,array(), array(
'empty'=>"Select state",
'class'=>"chzn-select",
));
答案 0 :(得分:3)
确定。我找到了解决方案。在这里写(也许有人会觉得它很有用)。 在我们的视图文件中
echo $form->dropDownList($profile, $field->varname,CHtml::listData(Countries::model()->findAll(),'short','title'), array(
'class'=>"chzn-select",
'empty'=>"Select country",
'ajax' => array(
'type' => 'POST',
'url'=>$this->createUrl('registration/state'),
'update' => '#Profile_state',
'data'=>array('country'=>'js:this.value',),
'success'=> 'function(data) {
$("#Profile_state").empty();
$("#Profile_state").append(data);
$("#Profile_state").trigger("liszt:updated");
} ',
)));
然后在第二个下拉列表中将数据空白:
echo $form->dropDownlist($profile, $field->varname, array(),array(
'class'=>"chzn-select",
'empty'=>"Select state",
));
对我来说很完美,但给了我数小时的研究工作。