2013-10-25 70 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));