我需要这个按钮组选择哪个应该细节上被用于在搜索进行过滤。这就是为什么我在我的模型中有一些帮助属性(在这些示例中坚持命名约定)$ leftSearch,$ middleSearch和$ rightSearch。
我希望按钮保持推入或取出,具体取决于用户的选择(否则会引起混淆,因为按钮在每次刷新后都未按下,但搜索属性将存储在隐藏字段中,用户看不到)。 我实现了使用
'active' => ($model->leftSearch)?true:false,
另一件事是数据值将取决于什么用户提交页面之前,选择了不同的。这与做:
'data-value' => ($model->leftSearch)?0:1,
在查看完整的代码如下所示:
$this->widget('bootstrap.widgets.TbButtonGroup', array(
'type' => 'primary',
'toggle' => 'checkbox',
'buttons' => array(
array('label'=>'Left',
'active' => ($model->leftSearch)?true:false,
'htmlOptions'=>array(
'data-field' => 'Model_leftSearch',
'data-value' => ($model->leftSearch)?0:1,
),),
array('label'=>'Middle',
'active' => ($model->middleSearch)?true:false,
'htmlOptions'=>array(
'data-field' => 'Model_middleSearch',
'data-value' => ($model->middleSearch)?0:1,
),),
array('label'=>'Right',
'active' => ($model->rightSearch)?true:false,
'htmlOptions'=>array(
'data-field' => 'Model_rightSearch',
'data-value' => ($model->rightSearch)?0:1,
),),
),
));
echo CHtml::activeHiddenField($model, 'leftSearch');
echo CHtml::activeHiddenField($model, 'middleSearch');
echo CHtml::activeHiddenField($model, 'rightSearch');
的JavaScript保持完全一致,那么frostyterrier发布
Yii::app()->clientScript->registerScript('buttonGroup', "
$(function(){
$('.btn-group a').click(function(){
var fieldId = $(this).data('field');
var value = $(this).data('value');
$('#' + fieldId).val(value);
});
});
", CClientScript::POS_END);
我唯一不明白JavaScript的部分是,它插入视图时,如上所述,但如果包含在一些外部.js文件不起作用。我认为它与POS_END有关,但我不是JavaScript专家。
THX很多!我刚刚回顾了你的回答,因为我在上个月没有时间了。无论如何,我发现它非常鼓舞人心。我只是做了一些修改,使其完全符合我的意愿。 我会在另一个答案中发布我的结果代码。 – gooy 2013-04-03 15:30:20