传送到CakePHP控制器的无线电按钮选择错误

时间:2013-06-15 18:07:39

标签: jquery html cakephp radio-button

有一个奇怪的问题,其中checked =“checked” - 属性被忽略,Cake在表单提交后总是收到值=“1”。

观点代码:

echo $this->Form->input('INCOMETYPE', array(
    'legend' => false,
    'value' => '1',
    'type' => 'radio',
    'options' => array('1' => 'Festbetrag', '2' => 'pro Stunde', '3' => 'Naturalien')
));

打印哪些:

<div class="input radio required">
    <input type="radio" name="data[Post][INCOMETYPE]" id="PostINCOMETYPE1" value="1" checked="checked">
    <label for="PostINCOMETYPE1">Festbetrag</label>
    <input type="radio" name="data[Post][INCOMETYPE]" id="PostINCOMETYPE2" value="2">
    <label for="PostINCOMETYPE2">pro Stunde</label>
    <input type="radio" name="data[Post][INCOMETYPE]" id="PostINCOMETYPE3" value="3">
    <label for="PostINCOMETYPE3">Naturalien</label>
</div>

实际上应该像魅力一样起作用。但是:

当用户检查值为2或3的无线电时,第一个的checked属性将不会消失,并且新检查的无线电都不会获得checked-attribute。在提交时,控制器因此每次都接收值=“1”。 第二个奇怪的事情是:当通过jQuery强制进行检查更改时:

$('#PostDEADLINE1').click(function() {
    $('#PostDEADLINE1').attr('checked', 'checked');
    $('#PostDEADLINE2').attr('checked', false);
    $('#PostDEADLINE3').attr('checked', false);
});
    $('#PostDEADLINE2').click(function() {
    $('#PostDEADLINE1').attr('checked', false);
    $('#PostDEADLINE2').attr('checked', 'checked');
    $('#PostDEADLINE3').attr('checked', false);
});
    $('#PostDEADLINE3').click(function() {
    $('#PostDEADLINE1').attr('checked', false);
    $('#PostDEADLINE2').attr('checked', false);
    $('#PostDEADLINE3').attr('checked', 'checked');
});

控制器也获得值=“1”。似乎jQuery方法根本没有效果。 我的问题:如何在Cake中获得单选按钮的工作示例?

1 个答案:

答案 0 :(得分:0)

找到解决方案。浏览器不会保持对checked属性的可视跟踪。在内部设置用户选择的正确检查状态。在调试了这两个参数后,一切都很好,在我的控制器中,我使用请求数据做了错误的事情:

debug($this->request->data['Post']['DEADLINE']);
debug($this->request->data['Post']['INCOMETYPE']);

当然,你不需要使用jQuery。