2012-01-24 2 views
0

У меня есть 2 поля с одинаковыми идентификаторами, а также имена, но пока отображается только один.2 выберите поля с одинаковыми идентификаторами, но один скрыт

Но когда форма опубликована, я не получаю точного значения. Она отображает только первое значение из раскрывающегося списка.

Ниже приведен пример кода.

<?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, а затем выслать его.

+9

Идентификатор должен быть «уникальным» -> http://www.w3schools.com/tags/att_standard_id.asp – Rikesh

+0

Интересно, как этот вопрос заслуживает 2-х голосов? – Rikesh

ответ

3

Не знаете, почему у вас есть два варианта с тем же именем, но когда вы их скрываете, вам также необходимо отключить его (disabled="disabled").

Согласно спецификации HTML, отключенные поля не отправляются, поэтому вы должны иметь свое истинное значение в списке, который не отключен.

+0

спасибо, что сработал, не нажимал на меня раньше ... –

0

Вам нужно будет иметь разные идентификаторы и в вашем коде условно проверить, какое значение поля окна видно, чтобы получить его значение.

0

Когда вы отправляете форму, данные POST содержат данные, основанные на атрибуте name. Если они имеют одинаковое имя, значение второго выбора перезаписывает значение, выбранное из первого. Даже если вы спрячете его на странице.

Если вы хотите иметь только значение первого выбора, вы должны отключить второй, добавив disabled="disabled" или изменив его имя.

1

Предположительно, вы используете какой-либо javascript для переключения выбранного выбора?

Если это так, то начать с

<select name="test" id="test"></select> 
<select name="test_dummy" id="test_dummy" style="display:none" ></select> 

И какой код изменяет атрибут стиля будет также изменить имя и идентификатор атрибутов

0

Даже когда один из них скрыт в каждом то они должны иметь разные названия в разметке, чтобы вы могли определить, какой из них.

В противном случае он будет передавать только значение последнего элемента (в разметке) через форму (независимо от того, скрыта ли она с помощью CSS или нет).

Я не совсем уверен, почему вы скрываете/показываете только один из них в любое время. Скорее всего, было бы лучше, если бы вы заменили <option> внутри выбора на новые, вместо того, чтобы использовать show/hide.

Смежные вопросы