0

遇到了一个奇怪的问题,checked="checked" 属性被忽略,Cake 在提交表单后总是收到 value="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 的收音机时,第一个的已检查属性不会消失,并且新检查的收音机都不会获得已检查的属性。因此,在提交时,控制器每次都会收到 value="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');
});

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

4

1 回答 1

0

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

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

当然,你不需要为这些东西使用 jQuery。

于 2013-06-16T10:45:53.820 回答