我选择了具有相同ID和名称的方框,但一次只显示一个。
但是当发布表单时,我没有得到确切的值。它只显示下拉列表中的第一个值。
以下是相同的示例代码。
<?php
var_dump($_POST)
?>
<form method="POST" action="">
<select name="test" id="test">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="test" id="test" style="display:none" >
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="submit" value="Add"/>
</form>
我甚至尝试用div包围选择框然后隐藏它。
答案 0 :(得分:3)
不确定为什么你有两个具有相同名称的选项,但是当你隐藏一个时你也需要禁用它(disabled="disabled"
)。
根据HTML规范,未提交已禁用的字段,因此您应该从未禁用的选项中发布您的真实值。
答案 1 :(得分:1)
据推测,你正在使用一些javascript来切换显示哪个选项?
如果是这种情况,请从
开始<select name="test" id="test"></select>
<select name="test_dummy" id="test_dummy" style="display:none" ></select>
无论哪个代码更改,style属性都必须更改name和id属性
答案 2 :(得分:0)
您必须拥有不同的ID,并在您的代码中有条件地检查哪个选择框值可见,以获取它的值。
答案 3 :(得分:0)
提交表单时,POST数据包含基于属性name
的数据。如果它们具有相同的名称,则第二个选择的值将覆盖从第一个选择的值。即使你将它隐藏在页面中。
如果您想只拥有第一个选择的值,则应通过添加disabled="disabled"
或更改其名称来禁用第二个选项。
答案 4 :(得分:0)
即使其中一个隐藏在每个点上,它们在标记中应该有不同的名称,这样你就可以识别出哪个是。
否则它只会通过表单传递最后一个元素(在标记中)值(无论它是否通过CSS隐藏)。
我不太清楚你为什么一次隐藏/只显示其中一个。如果你将select中的<option>
替换为新的,而不是使用show / hide,可能会更好。