在Yii中引用选择下拉值

时间:2013-01-14 17:11:06

标签: php yii

问题:使用CActiveForm dropDownList我试图让它在更改时发布所选值。但我不确定如何引用当前选定的下拉值?

到目前为止,

代码是:

$form->dropDownList($model,'condition',$model->getConditionOptions(), array('submit'=>array('theme/build','id'=>$model->id,'condition'=>'')));

getConditionOptions返回一个下拉值数组,'condition'应该是此下拉列表中的选定值。

2 个答案:

答案 0 :(得分:1)

不要仅仅为了获得当前值而指定一个属性 - 这会破坏下拉列表的目的。

要获取下拉列表的当前值,请在jquery中使用jQuery的val:http://api.jquery.com/val/,例如:

$("#DropDownID").val()

编辑:您真正的问题似乎是如何在更改下拉列表后更新内容,具体取决于下拉列表的值。这将通过AJAX完成。 Yii为此提供了一个特殊的AJAX数组:

$form->dropDownList($model,
                    'condition',
                    $model->getConditionOptions(),
                    array('submit'=>array('theme/build',
                          'id'=>$model->id,
                          'ajax'=>array('url'=>CController::createURL('controller/action'),
                                        'data'=>'$("#' . $model->id . '")',                                   
                                        'update'=>'#otherID', //selector to update
                                        )
                                    )
                          )
                    );

然后,在控制器端,您可以使用getParam获取值。请注意,无论您想要更新什么,都应该回显,而不是使用渲染。

编辑2:如果您不想使用jQuery,只需重新加载整个页面,您只需提交表单,例如:

$form->dropDownList($model, 'condition', $model->getConditionOptions(), array('submit'=>CController::createURL('controller/action')))

然后在你的控制器中,你仍然使用getParam,然后渲染一个新的页面。

答案 1 :(得分:0)

我认为你可以做到这一点的方式是这样的:

//define your dropdownlist
$form->dropDownList(
    $model,
    'condition',
    $model->getConditionOptions(),
    //your ajax call
    'ajax'  => array( 
        'type'  => 'POST',
        'url'   => 'theme/build'.
        'data'  => array(
            'id' => $model->id,
            'condition' =>'js:jQuery(this).val()', //current value
        )
);

编辑: 要获取当前选定的选项:

$('#dropbox').val();

$('#dropbox :selected').val();

获取当前选定的选项文本

$('#dropbox :selected').text();