twitter-bootstrap - 如何从 yii 中的 bootstrap 复选框按钮中获取值?

标签 twitter-bootstrap checkbox yii yii-extensions

我正在使用 yii-bootstrap 扩展并想使用复选框按钮组。渲染它没有问题,但我不知道如何读取哪个按钮被选中,哪个按钮没有被选中。是否有可能将每个复选框绑定(bind)到模型的属性?

这是我目前使用的(它实际上是来自 yii-bootstrap 网站的精确副本):

<?php $this->widget('bootstrap.widgets.TbButtonGroup', array(
  'type' => 'primary',
  'toggle' => 'radio', // 'checkbox' or 'radio'
  'buttons' => array(
    array('label'=>'Left'),
    array('label'=>'Middle'),
    array('label'=>'Right'),
  ),
)); ?>

最佳答案

我需要这个按钮组来选择应该使用哪些详细信息来过滤搜索。这就是为什么我在我的模型中有一些辅助属性(遵循这些示例中的命名约定)$leftSearch、$middleSearch 和 $rightSearch。

我希望按钮根据用户的选择保持插入或推出状态(否则它会变得困惑,因为每次刷新后按钮都不会被按下,但搜索属性将存储在隐藏字段中,用户没看到)。 我用

实现了这一点
'active' => ($model->leftSearch)?true:false,

另一件事是数据值,它会根据用户在提交页面之前的选择而有所不同。这是通过以下方式完成的:

'data-value' => ($model->leftSearch)?0:1,

View 中的完整代码如下所示:

$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 部分,我唯一不明白的是,当它像上面那样插入到 View 中时它可以工作,但如果包含在某些外部 .js 文件中则不起作用。我认为它与 POS_END 有关,但我不是 JavaScript 专家。

关于twitter-bootstrap - 如何从 yii 中的 bootstrap 复选框按钮中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15039502/

相关文章:

css - Angularjs:带有 Bootstrap 工具提示的指令

javascript - Bootstrap 推荐轮播

javascript - Ember 一开始不渲染组件

javascript - 复选框切换所有与 jquery 触发器功能

javascript - 使用复选框更新输入文本字段

javascript - 地理定位 API - 等待获取位置

jquery - 覆盖Bootstrap css?

javascript - Wordpress 联系表单 7 带有选项卡和复选框的表单

javascript - 将 li 输入值数据转换为 JSON

PHP 核心警告 - yii\base\ErrorException - Yii2