2013-07-24 60 views
2

如何在Yii Bootter中使用TbTabs时控制选项卡事件的更改?Yii Bootster - TbTabs更改选项卡事件

这里是我的代码(但是,当我已经改变了tab没有提醒):

$this->widget('bootstrap.widgets.TbTabs', array(
     'type' => 'tabs', 
     'tabs' => array(
      array('label' => 'Trainer Modules', 'content' => 'content tab 1', 
      array('label' => 'Default Modules', 'content' => 'content tab 2', 
     ), 
     'events' => array(
      'change' => "js:function(){alert('123');}" 
     ) 
    )); 
+0

的'哪个版本yii-助推器TbTabs'你正在使用? –

+0

在TbTabs中; 'run'方法,你有代码将注册你的组件的事件处理程序。 所以,如果它不适合你,你可以检查它是否在控制台中给Javascript错误? –

回答

4

只是为了将来参考,一个解决方案,以控制选项卡点击TbTabs是给ID给每个选项卡,并办理使用ClientScript的情况下,这是它如何工作的:

给ID像这样每一个环节:

$this->widget('bootstrap.widgets.TbTabs', array(
    'type'=>'tabs', 
    'placement'=>'above', // 'above', 'right', 'below' or 'left' 
    'tabs'=>array(
     array('label'=>'Section 1', 'active'=>true, 'linkOptions' => array('id'=>'link1')), 
     array('label'=>'Section 2', 'linkOptions' => array('id'=>'link2')), 
    ), 
)); 

然后注册您的使用CClientScript

Yii::app()->clientScript->registerScript("link1Click", "$('#link1').click(function(){alert('link1 is clicked');})"); 
Yii::app()->clientScript->registerScript("link1Click", "$('#link2').click(function(){alert('link2 is clicked');})"); 
1

标签是ulli元素。他们没有change事件。

看到代码:

foreach ($this->events as $name => $handler) 
    { 
     $handler = CJavaScript::encode($handler); 
     $cs->registerScript(__CLASS__.'#'.$id.'_'.$name, "jQuery('#{$id}').on('{$name}', {$handler});"); 
    } 

它类似:$('ul').on('change', function() { alert('123'); }); =>不起作用。

+0

好的!非常感谢!我还没有阅读代码。 但我刚刚找到了解决方案!这就是每个标签都有一个带有id的内容。因此,在事件“显示”中,我们只检查活动的标签...^_ ^ –

0

TbTab JS工作正常,但没有change事件为Bootstrap Tab
你可以找到Bootstrap Tab的js文件(适用事件)here

所以,你的代码需要一点点改变工作:

$this->widget('bootstrap.widgets.TbTabs', array(
     'type' => 'tabs', 
     'tabs' => array(
      array('label' => 'Trainer Modules', 'content' => 'content tab 1', 
      array('label' => 'Default Modules', 'content' => 'content tab 2', 
     ), 
     'events' => array(
      'show.bs.tab' => "js:function(tab){console.log(tab); alert(tab);}" // Occurs when the tab is about to be shown. 
      'shown.bs.tab' => "js:function(tab){console.log(tab); alert(tab);}" // Occurs when the tab is fully shown (after CSS transitions have completed) 
     ) 
    )); 

房地产信贷应该去Another Stack Question

相关问题