2013-09-28 37 views
1

我有兩個下拉菜單:#GameVenueId和#GameHometeamId。每個Venue都有一個默認的Hometeam,所以當#GameVenueId改變時,我想用默認的Hometeam更新#GameHometeamId。 (我也希望用戶能夠在罕見的異常情況下選擇不同的hometeam,這就是爲什麼我使用dropdowns的原因。)當用戶更改#GameVenueId中的選擇時,我有一個JSON對象,它將該地點爲其默認Hometeam的ID。我想用CakePHP的JS幫手完成這個任務,但我沒有運氣。CakePHP:用JS助手更改下拉選擇

查看:

$this->start('script'); 
echo $this->Html->script('jquery-1.10.2.min'); 
$this->Js->get('#GameVenueId'); 
$this->Js->event('change', 
    // insert code here 
); 
echo $this->Js->writeBuffer(); 
$this->end(); 

控制器:

$homefields = $this->Team->find('list', array(
    'fields' => array('Team.id', 'Team.venue_id'), 
)); 
$this->set(compact('homefields')); 

$ homefields,一旦它已通過json_encode()過去了,看起來是這樣的:

{"1":"1","2":"2","3":"5","4":"6","5":"7","6":"8","7":"10","8":"11","9":"12","10":"13","11":"14","12":"16","13":"15","14":"17"} 

現在,我有一些代碼寫出來,完全未經測試,因爲我無法讓CakePHP執行它,這就是爲什麼我試圖獲得此acc

$('#GameVenueId').change(function(){ 
    var n = $(this).val(); 
    var homefield = jQuery.parseJSON('".json_encode($homefields)."'); 
    $('#GameHometeamId option').filter(function() { 
     return ($(this).val() == homefield.n); 
    }).prop('selected', true); 
}); 

我想有幾個解決方案:要麼做到這一點通過JS助手或找到一種方法,使其真正得到執行格式化代碼通過JS幫手,而不是omplished。任何幫助都是極好的。

回答

1

更好地直接使用jQuery。 CakePHP的JS幫手不會很靈活。我認爲下面的代碼將起作用。

var homefield = <?php echo json_encode($homefields);?> 
$('#GameVenueId').change(function(){ 
    var n = $(this).val(); 
    $('#GameHometeamId').val(homefield[n]); 
}); 
+0

這通常是我在想出如何在CakePHP中執行jQuery後提出的解決方案。事實證明,你需要在$(document).ready(function(){})中執行它。 – develdevil