#php #html #html-select
#php #HTML #html-выбрать
Вопрос:
У меня есть начальная группа таких параметров:
<select name="item[type]">
<option value="0" class="dr">First</option>
<option value="1" class="dr">Second</option>
<option value="2" class="dr">Third</option>
<option value="3" class="dr">Fourth</option>
</select>
Я хочу проверить, определена ли переменная isset($test)
. Если это так, то я хочу изменить выбранную опцию, где значение value
равно $test
. Что-то вроде этого <OPTION SELECTED>
Например. $test = 3
; таким образом, выбранный параметр должен быть четвертым. Если $test
значение пустое или не определено, то первым должен быть выбранный параметр.
Ответ №1:
Один из способов:
<select name="item[type]">
<option <?=$test==0?'selected="selected"':'';?> value="0" class="dr">First</option>
<option <?=$test==1?'selected="selected"':'';?> value="1" class="dr">Second</option>
<option <?=$test==2?'selected="selected"':'';?> value="2" class="dr">Third</option>
<option <?=$test==3?'selected="selected"':'';?> value="3" class="dr">Fourth</option>
</select>
Другой:
<? $selected[$test] = 'selected="selected"'; ?>
<select name="item[type]">
<option <?=$selected[0];?> value="0" class="dr">First</option>
<option <?=$selected[1];?> value="1" class="dr">Second</option>
<option <?=$selected[2];?> value="2" class="dr">Third</option>
<option <?=$selected[3];?> value="3" class="dr">Fourth</option>
</select>
Комментарии:
1. Это ооочень умно! Большое спасибо.
Ответ №2:
<select name="item[type]" id="selectBoxId">
<option value="0" class="dr">First</option>
<option value="1" class="dr">Second</option>
<option value="2" class="dr">Third</option>
<option value="3" class="dr">Fourth</option>
</select>
<script type="text/javascript">
var test = "<?= $test; ?>";
if (test != '' amp;amp; parseInt(test)) {
document.getElementById('selectBoxId').selectedIndex = test;
}
</script>
Комментарии:
1. Я бы использовал JavaScript только для изменения DOM после какого-либо пользовательского ввода. Однако в этом случае вы уже знаете, какой вариант следует выбрать, поэтому нет необходимости использовать JavaScript. Вместо этого убедитесь, что в DOM уже есть вся нужная информация, используя чисто логику PHP, чтобы добавить выбранный атрибут в нужное место. Кроме того, единственный способ, которым это работает, — добавить JavaScript на ту же страницу, чтобы вы могли получить доступ к переменной PHP, или добавить переменную где-нибудь скрытую в DOM, чтобы вы могли получить ее с помощью внешнего JS-скрипта. Оба далеки от идеала.
2. О, я абсолютно согласен. Но мы не знаем, как организованы его скрипты и разделены ли они вообще. Возможно, он использует какую-то систему шаблонов, для которой могут быть определены переменные или что-то еще.. Я просто предоставлял простое решение для очень ограниченной информации, которая была мне предоставлена. Тем не менее, я ценю ваше мнение и полностью согласен с ним.
Ответ №3:
Удалите «[тип]» из имени выбора, сделайте его простым для «элемента». Затем выполните этот код.
$test = isset($_POST['item']) ? $_POST['item'] : "0";
Ответ №4:
// assuming you are using a loop: in the loop where you create the options
$selected_html = $test == $loop_var ? ' selected="selected" ' : '';
echo "<option value="$loop_var" class="dr"$selected_html>$text</option>";