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フォームの送信後に 2 番目のラジオ ボタンがユーザーの選択に固執せず、デフォルトのチェックされた状態に戻りますanswer2。しかし、ラジオ ボタンの最初のセットは正常に機能します。コードからデフォルトのオプションを削除すると、checkedフォームの送信後に両方のラジオ ボタンが正常に機能します。checkedラジオのデフォルトオプションを使用しているときに、フォーム送信後にラジオボタンをチェックしたままにするにはどうすればよいですか

4

2 に答える 2

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 に答える
2

したがって、問題は、checkedフォームの送信時に値を 2 回設定しているため、デフォルト値 (初期フォーム状態から) または送信された値のいずれかが選択されることです。

これが正しく機能するためには、次のように、常に 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 に答える