有一个奇怪的问题,其中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中获得单选按钮的工作示例?
答案 0 :(得分:0)
找到解决方案。浏览器不会保持对checked属性的可视跟踪。在内部设置用户选择的正确检查状态。在调试了这两个参数后,一切都很好,在我的控制器中,我使用请求数据做了错误的事情:
debug($this->request->data['Post']['DEADLINE']);
debug($this->request->data['Post']['INCOMETYPE']);
当然,你不需要使用jQuery。