3

我有两组 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在表单提交后不会粘在用户选择上,它会变回默认的选中状态。即answer2。但是第一组单选按钮工作正常。如果我从代码中删除默认checked选项,则表单提交后两个单选按钮都可以正常工作。如何在表单提交后保持选中单选按钮,同时使用checked收音机的默认选项

4

2 回答 2

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 内容分开且更易于管理;-)

于 2013-09-30T15:06:32.230 回答
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>
于 2014-03-14T05:50:07.883 回答