问题:使用CActiveForm
dropDownList
我试图让它在更改时发布所选值。但我不确定如何引用当前选定的下拉值?
代码是:
$form->dropDownList($model,'condition',$model->getConditionOptions(), array('submit'=>array('theme/build','id'=>$model->id,'condition'=>'')));
getConditionOptions
返回一个下拉值数组,'condition'应该是此下拉列表中的选定值。
答案 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();