我有两组html格式button
和button1
的单选按钮。我正在使用以下代码
1.检查默认值(第一组为question1
,下一组为answer2
)
2.在表单提交后选择用户单选按钮
<div id="button_set1">
<input onClick="show_seq_lunid();" type="radio" name="button" value="Yes" <?php if(isset($_POST['button']) && $_POST['button'] == 'Yes') echo ' checked="checked"';?> checked /><label>question1</label>
<input onClick="show_list_lunid();" type="radio" name="button" value="No" <?php if(isset($_POST['button']) && $_POST['button'] == 'No') echo ' checked="checked"';?> /><label>answer1</label>
</div>
<div id="button_set2">
<input onClick="os_hpux();" type="radio" name="button1" value="Yes" <?php if(isset($_POST['button1']) && $_POST['button1'] == 'Yes') echo ' checked="checked"';?> /><label>question2</label>
<input onClick="os_others();" type="radio" name="button1" value="No" <?php if(isset($_POST['button1']) && $_POST['button1'] == 'No') echo ' checked="checked"';?> checked /><label>answer2</label>
</div>
如果我使用下面的代码,第二个单选按钮button1
在表单提交后没有坚持用户选择,它会更改回默认的checked state.ie answer2
。但第一组单选按钮工作正常。
如果我从代码中删除默认的checked
选项,则两个单选按钮在表单提交后工作正常。在使用checked
无线电默认选项
答案 0 :(得分:2)
因此,问题是您在表单提交时将checked
值设置两次,从而选择默认值(从初始表单状态)或已提交的值。
为了使其正常工作,您需要始终使用PHP将checked
值附加到您的无线电元素,如下所示:
<div id="button_set1">
<input onClick="show_seq_lunid();" type="radio" name="button" value="Yes" <?php if(!isset($_POST['button']) || (isset($_POST['button']) && $_POST['button'] == 'Yes')) echo ' checked="checked"'?> /><label>question1</label>
<input onClick="show_list_lunid();" type="radio" name="button" value="No" <?php if(isset($_POST['button']) && $_POST['button'] == 'No') echo ' checked="checked"';?> /><label>answer1</label>
</div>
<div id="button_set2">
<input onClick="os_hpux();" type="radio" name="button1" value="Yes" <?php if(isset($_POST['button1']) && $_POST['button1'] == 'Yes') echo ' checked="checked"';?> /><label>question2</label>
<input onClick="os_others();" type="radio" name="button1" value="No" <?php if(!isset($_POST['button1']) || (isset($_POST['button1']) && $_POST['button1'] == 'No')) echo ' checked="checked"';?> /><label>answer2</label>
</div>
这是一个有效的预览:http://codepad.viper-7.com/rbInpX
此外,请注意您使用内联JavaScript表示法,通常不鼓励动态JS内容分开且更易于管理; - )
答案 1 :(得分:2)
我最近遇到了类似的问题,但是有更多的单选按钮需要处理,所以我想我会将值检查功能抽象为一种方法,该方法也会创建单选按钮本身,从而最大限度地减少重复值检查码。我已经重新设计了我的变量名称:
function createRadioOption($name, $value, $onClickMethodName, $labelText) {
$checked = '';
if ((isset($_POST[$name]) && $_POST[$name] == $value)) {
$checked = ' checked="checked"';
}
echo('<input onClick="'. $onClickMethodName .'();" type="radio" name="'. $name .'" value="'. $value .'"'. $checked .' /><label>'. $labelText .'</label>');
}
<div id="button_set1">
<?php createRadioOption('button', 'Yes', 'show_seq_lunid', 'question1'); ?>
<?php createRadioOption('button', 'No', 'show_list_lunid', 'question1'); ?>
</div>
<div id="button_set2">
<?php createRadioOption('button1', 'Yes', 'os_hpux', 'question2'); ?>
<?php createRadioOption('button1', 'No', 'os_others', 'question2'); ?>
</div>