【问题标题】:Is it possible repeating same Radio button with different check value?是否可以使用不同的检查值重复相同的单选按钮?
【发布时间】:2012-07-24 22:50:54
【问题描述】:

我的问题是关于单选按钮。我有 10 个具有相同名称和顺序值的单选按钮。选中其中一个单选按钮。示例代码如下:

<li><input type="radio" value="1000" checked="checked" name="status" />Yet to contact</li>
<li><input type="radio" value="1001" name="status"/>To call back, follow up</li>
<li><input type="radio" value="1002" name="status"/>Interested, to meet</li>
<li><input type="radio" value="1003" name="status"/>Meeting over, to follow up</li>
<li><input type="radio" value="1004" name="status"/>Meeting over, not interested</li>
<li><input type="radio" value="1005" name="status"/>Not interested now</li>
<li><input type="radio" value="1006" name="status"/>Wrong contact details</li>
<li><input type="radio" value="1007" name="status"/>Services taken</li>

以上代码将是通过 PHP 生成的动态代码,并且会在单个页面上重复多次。但是,我尝试过使用纯 html 代码,发现它会产生问题并且没有显示任何选中的单选按钮。如果我按不同的名称对它进行分组,例如 name="status[1]" 和 name="status[2]" 那么只有每组单选按钮显示一个选中的单选按钮。

有没有人有一个解决方案,我可以为所有单选按钮保留相同的名称,并且每个单选按钮组(具有相同名称)将显示一个默认单选按钮被选中?

【问题讨论】:

  • 您是否尝试将它们放入字段集中?
  • 好吧,我已经在 W3Schools 中检查了您的代码,因为我没有发现任何问题,而且运行良好。所以不确定你的问题是什么。
  • 您好 RedEyeMonster,感谢您的回复。请在同一页面上重复相同的代码两到三遍。你会发现问题。
  • 如果给所有单选菜单命名相同,那么浏览器将如何区分它们?单选按钮的设计使得每个菜单(每组单选按钮)只能选择一个选项。当一个被选中时,其余的都被取消选中。如果你想创建不同的单选菜单,但你给它们都赋予了相同的名称(并将它们都放在相同的形式中),那么对于浏览器来说,它就像一个单一的大单选菜单。

标签: php html dynamic radio


【解决方案1】:

如果我正确理解了您的问题:

在单选按钮的name 属性中指定一个数组。

<input  type="radio" name="check[]" value="1" />
<input  type="radio" name="check[]" value="2" />
<input  type="radio" name="check[]" value="3" />

当您使用$_POST['check'] 时,您将获得一个数组,其中包含选中的单选按钮的索引和值。

假设如果您选中了第一个和第三个单选按钮,则数组将如下所示:

array('0'=&gt;'1', '2'=&gt;'3')

【讨论】:

  • 嗨,阿斯普林,不知怎的,你说对了一半。但是,我将再次重复具有与数组和值相同名称的相同单选按钮,但是在重复默认单选按钮时,检查值会有所不同。我希望你能明白我想向你解释什么..
  • 这是不正确的。首先,指定数组数据的foo[] 格式是 PHP 特性而不是 HTTP 标准。在所有其他语言中,您的做法是简单地为所有输入提供相同的名称(例如?foo=val1&amp;foo=val2&amp;foo=val3)。其次,单选按钮返回单个标量值,而不是数组。因此,即使对于 PHP 后端,您也不需要在变量名之后使用 []
【解决方案2】:

每组单选按钮的名称必须是唯一的。

试试这样的:

for ($i=1; $i<=5; $i++) {
   echo '<li><input type="radio" value="1000" checked="checked" name="status'.$i.'" />Yet to contact</li>
         <li><input type="radio" value="1001" name="status'.$i.'"/>To call back, follow up</li>

         <li><input type="radio" value="1002" name="status'.$i.'"/>Interested, to meet</li>

         <li><input type="radio" value="1003" name="status'.$i.'"/>Meeting over, to follow up</li>

         <li><input type="radio" value="1004" name="status'.$i.'"/>Meeting over, not interested</li>

         <li><input type="radio" value="1005" name="status'.$i.'"/>Not interested now</li>

         <li><input type="radio" value="1006" name="status'.$i.'"/>Wrong contact details</li>

         <li><input type="radio" value="1007" name="status'.$i.'"/>Services taken</li>';
}

要读取选定的值,请使用:

for ($i=1; $i<=5; $i++) {
   echo $_POST["status$i"] . '<br>;
}

【讨论】:

  • 嗨,布拉姆,您的解决方案很好,我之前也以同样的方式考虑过。但是,由于每个单选按钮组名称不同,我如何在表单提交中捕获单选按钮的值。你有没有想过这个问题?任何解决方案。
  • 感谢您的及时回复。您每次都调用相同的数组,并且数组会将相同的数字与“状态”文本一起计为名称的一部分。我希望我是对的并且猜对了。因此,如果我重复此代码 5 次,那么每次我都会得到第一个带有 name="status1" 的单选按钮,依此类推。所以这意味着重复的单选按钮组每次都会有相同的名称。如果我错了,请纠正我。谢谢
  • 我认为你还没有完全理解。正如您在我的代码中看到的那样,我使用的是for loop。这个循环将创建 5 个数组。下一个循环用于在您发布表单后读取 5 个数组。因此,您不必重复代码,因为循环会处理这些。
猜你喜欢
  • 2021-03-12
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-21
  • 2016-08-10
  • 2013-03-09
相关资源
最近更新 更多