HTML:单选按钮数组
Posted
技术标签:
【中文标题】HTML:单选按钮数组【英文标题】:HTML: Radio Button Array 【发布时间】:2012-03-06 03:56:54 【问题描述】:好吧,我在处理单选按钮数组时遇到了与其他线程不同的问题。
我想要它,以便根据选择的答案,将值保存在不同的数组中,但我不希望用户能够从同一个问题中选择多个选项。
例子:
Question 1
<input type="radio" name="Array1[]" value="question1"/>
<input type="radio" name="Array2[]" value="question1"/>
<input type="radio" name="Array3[]" value="question1"/>
<input type="radio" name="Array4[]" value="question1"/>
Question 2
<input type="radio" name="Array1[]" value="question2"/>
<input type="radio" name="Array2[]" value="question2"/>
<input type="radio" name="Array3[]" value="question2"/>
<input type="radio" name="Array4[]" value="question2"/>
这样做的目的是让我可以将问题本身安排在 4 个类别中的一个中,并用分配给它们的问题填充每个数组。
例子:
假设有 4 个问题,答案是 1、3、1、2,我想要的结果数组是:
Array1[0] = "question1"
Array1[1] = "question3"
Array2[0] = "question4"
Array3[0] = "question3"
Array4[] = Empty array
这可以做到还是我需要不同的方法来获得所需的输出?顺便说一下,我打算用php来处理这个表单。
编辑:更多细节。一个示例用法。
<h1>What are your preferences?</h1>
<form type=...etc.>
<label>Cats</label>
<input type="radio" name="Love[]" value="Cats"/>
<input type="radio" name="Like[]" value="Cats"/>
<input type="radio" name="Dislike[]" value="Cats"/>
<input type="radio" name="Hate[]" value="Cats"/>
<label>Dogs</label>
<input type="radio" name="Love[]" value="Dogs"/>
<input type="radio" name="Like[]" value="Dogs"/>
<input type="radio" name="Dislike[]" value="Dogs"/>
<input type="radio" name="Hate[]" value="Dogs"/>
<label>Ferrets</label>
<input type="radio" name="Love[]" value="Ferrets"/>
<input type="radio" name="Like[]" value="Ferrets"/>
<input type="radio" name="Dislike[]" value="Ferrets"/>
<input type="radio" name="Hate[]" value="Ferrets"/>
<label>Turtles</label>
<input type="radio" name="Love[]" value="Turtles"/>
<input type="radio" name="Like[]" value="Turtle"/>
<input type="radio" name="Dislike[]" value="Turtles"/>
<input type="radio" name="Hate[]" value="Turtles"/>
<form>
【问题讨论】:
这背后的逻辑是什么?目的是什么?您只能选择一台收音机,这就是收音机的问题。为什么要使用数组?一个简单的<?php $radioValue = $_POST['radioName'] ?>
就可以了。
这不是问题的答案,而是某种排列脚本,用户应该在其中将问题排列在 4 个类别之一中。把它想象成问题是对象,可以放在 4 个盒子之一中;所以所需的输出是每个盒子包含的内容。
你能举一个可能的问题和答案的例子吗?我还是不明白。你不能只使用复选框吗?
编辑了帖子并提供了更多详细信息。
这没有意义!
【参考方案1】:
您只能为每个名称选择一个单选按钮,因此如果您有不同的名称(如您所做的那样),用户将能够为每个问题选择多个单选按钮。我很抱歉地说,但你的提议是行不通的。相反,您将不得不维护一个为相应问题回答的数字的手动列表。看来您提前知道了所有答案,所以这应该没什么大不了的。
【讨论】:
我知道我必须使用相同的名称才能使选项互斥。我的问题是如何达到预期的结果,即使我必须采取不同的方法。【参考方案2】:我认为您可以猜到该名称对复选框进行了分组,因此如果没有 javascript,您想要这样做的方式是不合理的。我建议您为每个问题命名复选框,然后您可以使用 php.ini 按值对它们进行分组。
例如,如果您得到答案 1、3、1、2,您可以将 push
它们放入相应的数组中。
会是这样的。但这不是饼干的证据
<form method="post">
<input type="radio" name="v1" id="v1-1" value="1"/><label for="v1-1">1-1</label><br/>
<input type="radio" name="v1" id="v1-2" value="2"/><label for="v1-2">1-2</label><br/>
<input type="radio" name="v1" id="v1-3" value="3"/><label for="v1-3">1-3</label><br/>
<input type="radio" name="v2" id="v2-1" value="1"/><label for="v2-1">2-1</label><br/>
<input type="radio" name="v2" id="v2-2" value="2"/><label for="v2-2">2-2</label><br/>
<input type="radio" name="v2" id="v2-3" value="3"/><label for="v2-3">2-3</label><br/>
<input type="radio" name="v3" id="v3-1" value="1"/><label for="v3-1">3-1</label><br/>
<input type="radio" name="v3" id="v3-2" value="2"/><label for="v3-2">3-2</label><br/>
<input type="radio" name="v3" id="v3-3" value="3"/><label for="v3-3">3-3</label><br/>
<input type="radio" name="v4" id="v4-1" value="1"/><label for="v4-1">4-1</label><br/>
<input type="radio" name="v4" id="v4-2" value="2"/><label for="v4-2">4-2</label><br/>
<input type="radio" name="v4" id="v4-3" value="3"/><label for="v4-3">5-3</label><br/>
<input type="submit" value="vote"/>
</form>
<?php
if(! empty($_POST))
$plausible_answers = array(1,2,3,4);
$answers = array();
for($i=1;! empty($_POST["v$i"]);++$i)
if(in_array($_POST["v$i"], $plausible_answers))
$answers[$_POST["v$i"]][] = $i;
print_r($answers);
?>
【讨论】:
是的,我也这么想,但我想要一个更简单的解决方案(奥卡姆)。由于似乎没有办法解决它,我只需要按照你说的做。谢谢。【参考方案3】:我认为你需要从另一个方向着手,像这样
<label>Cats</label>
<input type="radio" name="Cats" value="Love"/> Love
<input type="radio" name="Cats" value="Like"/> Like
<input type="radio" name="Cats" value="Dislike"/> Dislike
<input type="radio" name="Cats" value="Hate"/> Hate
在服务器端,类似:
$loves=array();
$likes=array();
$dislikes=array();
$hates=array();
然后遍历 $_POST,检查值,如果它与您期望的四个中的任何一个匹配,则将名称推送到适当的数组中。
【讨论】:
【参考方案4】:您可以创建像 array[] 这样的数组,但是在单选按钮中,我们必须为像 array[1],array[2] ... 动态地赋予索引。 id 我们给radioArray[] 之类的名称,就像其他输入类型="fname[]" 但它不会自动增加我们必须用额外变量增加索引的索引。
e.g name= "$radiArray[1] = 'val1'"; //give index like 1,2,3 ...
name ="$radiArray[2] = 'val2'"; ....
【讨论】:
以上是关于HTML:单选按钮数组的主要内容,如果未能解决你的问题,请参考以下文章