我有两个下拉菜单:#GameVenueId和#GameHometeamId。每个Venue都有一个默认的Hometeam,所以当#GameVenueId被更改时,我想用默认的Hometeam更新#GameHometeamId。 (我也希望用户能够在极少数情况下选择不同的家庭团队,这就是我使用下拉菜单的原因。)当用户更改#GameVenueId中的选择时,我有一个JSON对象,它映射了ID Venue到其默认Hometeam的ID。我想用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'));
{"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执行它,这就是为什么我试图通过JS帮助程序实现这一点:
$('#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帮助程序执行此操作,要么找到一种格式化代码的方法,以便实际执行。任何帮助都会很棒。
答案 0 :(得分:1)
更好地直接使用jQuery。 CakePHP JS助手不会灵活多变。我认为以下代码可行。
var homefield = <?php echo json_encode($homefields);?>
$('#GameVenueId').change(function(){
var n = $(this).val();
$('#GameHometeamId').val(homefield[n]);
});