2

我正在尝试创建一个注册页面,一个人可以在其中与其他几个人一起注册他/她自己,或者只注册包括他/她自己的其他人。所以我为这些选项创建了 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>

(请注意,如果您使用任何类型的 javascript 框架,如 jquery 或原型,则 javascript 部分会更容易解决)

于 2012-09-09T23:13:43.090 回答
0

您需要在form标签中添加一个 id,以便 javascript 可以轻松找到它。

您需要单选按钮上的“onchange”事件,以便在任何更改时提交表单。

最后,添加一个提交按钮并使用 javascript 将其从页面中删除。这样,如果 javascript 出现问题(或者如果它被关闭),人们仍然可以使用您的网站。该按钮甚至在它被绘制到屏幕上之前就会被删除,所以就好像它不适合任何使用 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 回答