CakePHP:使用JS帮助器更改下拉选择

时间:2013-09-28 17:49:52

标签: php jquery cakephp

我有两个下拉菜单:#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'));
$ 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执行它,这就是为什么我试图通过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帮助程序执行此操作,要么找到一种格式化代码的方法,以便实际执行。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

更好地直接使用jQuery。 CakePHP JS助手不会灵活多变。我认为以下代码可行。

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