Укажите выбранный по умолчанию элемент для раскрывающихся списков HTML-форм. - PullRequest
3 голосов
/ 31 августа 2010

Обычно, когда вам нужно выбрать элемент по умолчанию, вы делаете:

<select>
  <option value="1">                 Volvo  </option>
  <option value="2" selected="true"> Saab  </option>
  <option value="3">                 Mercedes  </option>
  <option value="4">                 Audi  </option>
</select>

Возможно ли получить что-то подобное?

<select selectedValue="2">
  <option value="1">  Volvo  </option>
  <option value="2">  Saab  </option>
  <option value="3">  Mercedes  </option>
  <option value="4">  Audi  </option>
</select>

В PHP это работает прощетак как вам нужно программировать только одно значение, вместо обработки выбранного атрибута для любого возможного <option/>.

Ответы [ 5 ]

7 голосов
/ 31 августа 2010

Нет такого атрибута в элементе <select>. Предполагая, что ваш <option> вывод находится в цикле, я не вижу, как он имеет огромное значение:

$selected = "2";
foreach($values as $key => $val) {
    echo "<option value=\"" . $key . "\"" . ($key == $selected ? " selected=\"selected\">" : ">") . $val . "</option>";
}

(мой PHP немного ржавый, это может быть не на 100% правильно)

3 голосов
/ 31 августа 2010

Нет, но вы можете добавить значение по умолчанию к вашему идентификатору, например

<select id="default-value-2">

, тогда в ваших настройках у вас будет

<option value="2" <?php echo is_this_the_default_value ? selected='true' : '' ?>

или что-то в этом роде (простите, язабыл мой синтаксис php, но я надеюсь, что вы поняли).

В любом случае, это тоже грязное исправление, поэтому я предлагаю просто добавить метод для проверки выбранного тега по умолчанию и распечатать его selected = "selected«когда это по умолчанию.Вы можете просто позвонить один раз, если вы перебираете опции выбора

3 голосов
/ 31 августа 2010

Поставьте JavaScript после объявления списка и установите там выбранный индекс:

<script>
document.getElementById('listBoxId').selectedIndex=<?php echo $INDEX ?>;
</script>

Как то так.

1 голос
/ 29 марта 2013

Вы можете сделать это так:

$value = 1;

<select>
<?php if($value==1) echo "<option selected='true'> Volvo </option>";
else echo "<option> Volvo </option>"; ?>
<?php if($value==2) echo "<option selected='true'> Saab </option>";
else echo "<option> Saab </option>"; ?>
</select>
0 голосов
/ 19 апреля 2014

Я обнаружил, что гуглю это, чтобы увидеть, есть ли лучший способ сделать это.

Лучший и самый чистый ответ от @roryf, однако, если вы не просматриваете свои данные, я подумал, что было бы намного чище заключить их в функцию:

function set_selected($desired_value, $new_value)
{
    if($desired_value==$new_value)
    {
        echo ' selected="selected"';
    }
}

Тогда вы бы использовали это так:

<?php $selected_value = 2; ?>

<select>
    <option value="1"<?php set_selected('1', $selected_value); ?>> Volvo  </option>
    <option value="2"<?php set_selected('2', $selected_value); ?>> Saab  </option>
    <option value="3"<?php set_selected('3', $selected_value); ?>> Mercedes  </option>
    <option value="4"<?php set_selected('4', $selected_value); ?>> Audi  </option>
</select>

Это установит Saab как выбранный:)

...