表单提交后检查单选按钮

时间:2013-09-30 14:52:15

标签: html forms radio-button

我有两组html格式buttonbutton1的单选按钮。我正在使用以下代码

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无线电默认选项

时,如何在表单提交后检查单选按钮

2 个答案:

答案 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>