2选择具有相同ID但只隐藏一个的框

时间:2012-01-24 13:36:34

标签: php html drop-down-menu

我选择了具有相同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包围选择框然后隐藏它。

5 个答案:

答案 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,可能会更好。