2

1 人が他の複数のユーザーと一緒に自分自身を登録するか、自分以外のユーザーを登録できる登録ページを作成しようとしています。したがって、これらのオプション用に 2 つのラジオ ボタンを作成しましたが、選択したラジオ ボタンの値を使用して特定のデータを表示する必要があります。これはこれまでの私のコードです

<form name="selectnum" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" >
<input type="radio" name="people" value="1"/> I'm attending <br/>
<input type="radio" name="people" value="2"/> I'm not attending <br/>
</form>

<?php if($_POST["people"]==1) { ?>
    How many, counting yourself, are you registering:
    <select name="num_a">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    </select>
<?php } elseif($_POST["people"]==2) { ?>
    How many, NOT counting yourself, are you registering:
    <select name="num_a">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    </select>
<?php } ?>

しかし、ラジオ ボタンの値を $_POST 配列に保存するには、送信ボタンが必要であることに気付きました。では、投稿データを使用する代わりに、ユーザーがどのラジオ ボタンを選択したかを確認し、適切な質問を表示するにはどうすればよいでしょうか? ありがとうございました

4

2 に答える 2

1

誰かのコードを書くことが本当の目的ではないことはわかっていますが、これにより、javascript が最適なソリューションである理由と、PHP がこれを解決できない理由についてある程度の理解が得られるかもしれません。PHP はサーバー側のスクリプトであり、クライアント側の問題を解決することはできませんが、javascript では解決できます ;) PHP で解決してみると、非常にあいまいになり、javascript は非常に悲しいものになります.. :D

このコードを試して、古いコードを保存して遊んでみてください。

<script type="text/javascript">
  function changedPeople(radio) {
    switch(radio.value) {
      case '1':
        document.getElementById('people1').style.display = "block";
        document.getElementById('people2').style.display = "none";
        break;
      case '2':
        document.getElementById('people1').style.display = "none";
        document.getElementById('people2').style.display = "block";
        break;

    }
    document.getElementById('submitter').style.display = "block";
  }
</script>

<form name="selectnum" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" >
  <input type="radio" name="people" value="1" onchange="javascript:changedPeople(this);"/> I'm attending <br/>
  <input type="radio" name="people" value="2" onchange="javascript:changedPeople(this);"/> I'm not attending <br/>

  <div id="people1" style="display:none;">
    How many, counting yourself, are you registering:
    <select id="people1_select" name="num_a">
    <?php for($i=1;$i<=20;$i++) { ?>
      <option value="<?php echo $i ?>"><?php echo $i ?></option>
    <?php } ?>
    </select>
  </div>

  <div id="people2" style="display:none;">
    How many, NOT counting yourself, are you registering:
    <select id="people1_select" name="num_b">
    <?php for($i=1;$i<=20;$i++) { ?>
      <option value="<?php echo $i ?>"><?php echo $i ?></option>
    <?php } ?>
    </select>
  </div>

  <input type="submit" value="submit" id="submitter" style="display:none;" />
</form>

(jqueryやprototypeなどのJavaScriptフレームワークを使用している場合、JavaScriptの部分はより簡単に解決できることに注意してください)

于 2012-09-09T23:13:43.090 に答える
0

formJavaScript が簡単に見つけられるように、タグに ID を追加する必要があります。

何かが変更されるたびにフォームを送信するには、ラジオ ボタンに「onchange」イベントが必要です。

最後に、送信ボタンを追加し、JavaScript を使用してページから削除します。これにより、javascript に問題が発生した場合 (またはオフになっている場合) に、人々は引き続きあなたの Web サイトを使用できます。ボタンは画面に描画される前に削除されるため、JavaScript を使用している人には存在しないかのように見えます。JavaScript を使用する場合と使用しない場合で、必ずページをテストしてください。

コードに追加する必要があるものは次のとおりです。

<form id="selectnum_form">
  <input type="radio" onchange="document.getElementById('selectnum_form').submit()"/>
  <input type="radio" onchange="document.getElementById('selectnum_form').submit()"/>

  <input type="submit" value="go" id="selectnum_submit"/>
  <script type="text/javascript">document.getElementById('selectnum_submit').style.display = 'none';</script>
</form>
于 2012-09-09T22:35:20.600 に答える