带有选定jquery插件的依赖下拉列表。动态更新

时间:2013-03-28 12:02:16

标签: yii yii-components

我是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",

        ));

1 个答案:

答案 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",
    ));

对我来说很完美,但给了我数小时的研究工作。