遇到了一个奇怪的问题,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 中单选按钮的工作示例?