2013-10-25 58 views
1

我试图隐藏/显示组合框,我有2个组合框,我希望第二个隐藏,直到第一个更改。Cakephp 2.x - 隐藏/显示组合框

<?php echo $this->Form->input('combobox1'); ?> 
<?php echo $this->Form->input('combobox2'); ?> 

因此,我认为我需要做的是这样的:

$this->Js->get('#idcombobox2')->effect('hide');隐藏在页面只需加载组合框。

而且是这样的:

$this->Js->get('#idcombo1')->event('change', $this->Js->get('#idcombobox2')->effect('show'));因为如果第一个变化我想说明的第二位。

但这不起作用。

感谢您的帮助。

回答

0

你是否在视图中包含jquery或其他框架?

echo $this->Html->script('//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'); 

并且如果你将其输出到<head>array('inline' => false),确保在布局中指定脚本位置:

echo $scripts_for_layout; 

记得你还需要输出缓冲区视图:

echo $this->Js->writeBuffer(); 

编辑:,实际上为我工作的代码:

$event = $this->Js->get('#combo2')->effect('show'); 
$this->Js->get('#combo1')->event('change', $event); 

编辑2:不知何故,我刚用scriptBlock隐藏combo2。所以整个代码会这样下去

$hide = $this->Js->get('#combo2')->effect('hide'); 
echo $this->Html->scriptBlock($this->Js->domReady($hide)); 
$show = $this->Js->get('#combo2')->effect('show'); 
$this->Js->get('#combo1')->event('change', $show); 
echo $this->Js->writeBuffer(array('inline' => false));