У меня есть список странных html-опций, которые я не хочу проверять каждое значение, чтобы сделать его выбранным или не увидеть список ниже
<select name="height" id="height"> <option value="" label="Select">Select Height</option> <option value="4ft 5in - 134cm" label="4ft 5in - 134cm">4ft 5in - 134cm</option> <option value="4ft 6in - 137cm" label="4ft 6in - 137cm">4ft 6in - 137cm</option> <option value="4ft 7in - 139cm" label="4ft 7in - 139cm">4ft 7in - 139cm</option> <option value="4ft 8in - 142cm" label="4ft 8in - 142cm">4ft 8in - 142cm</option> <option value="4ft 9in - 144cm" label="4ft 9in - 144cm">4ft 9in - 144cm</option> <option value="4ft 10in - 147cm" label="4ft 10in - 147cm">4ft 10in - 147cm</option> <option value="4ft 11in - 149cm" label="4ft 11in - 149cm">4ft 11in - 149cm</option> <option value="5ft - 152cm" label="5ft - 152cm">5ft - 152cm</option> <option value="5ft 1in - 154cm" label="5ft 1in - 154cm">5ft 1in - 154cm</option> <option value="5ft 2in - 157cm" label="5ft 2in - 157cm">5ft 2in - 157cm</option> <option value="5ft 3in - 160cm" label="5ft 3in - 160cm">5ft 3in - 160cm</option> <option value="5ft 4in - 162cm" label="5ft 4in - 162cm">5ft 4in - 162cm</option> <option value="5ft 5in - 165cm" label="5ft 5in - 165cm">5ft 5in - 165cm</option> <option value="5ft 6in - 167cm" label="5ft 6in - 167cm">5ft 6in - 167cm</option> <option value="5ft 7in - 170cm" label="5ft 7in - 170cm">5ft 7in - 170cm</option> <option value="5ft 8in - 172cm" label="5ft 8in - 172cm">5ft 8in - 172cm</option> <option value="5ft 9in - 175cm" label="5ft 9in - 175cm">5ft 9in - 175cm</option> <option value="5ft 10in - 177cm" label="5ft 10in - 177cm">5ft 10in - 177cm</option> <option value="5ft 11in - 180cm" label="5ft 11in - 180cm">5ft 11in - 180cm</option> <option value="6ft - 182cm" label="6ft - 182cm">6ft - 182cm</option> <option value="6ft 1in - 185cm" label="6ft 1in - 185cm">6ft 1in - 185cm</option> <option value="6ft 2in - 187cm" label="6ft 2in - 187cm">6ft 2in - 187cm</option> <option value="6ft 3in - 190cm" label="6ft 3in - 190cm">6ft 3in - 190cm</option> <option value="6ft 4in - 193cm" label="6ft 4in - 193cm">6ft 4in - 193cm</option> <option value="6ft 5in - 195cm" label="6ft 5in - 195cm">6ft 5in - 195cm</option> <option value="6ft 6in - 198cm" label="6ft 6in - 198cm">6ft 6in - 198cm</option> <option value="6ft 7in - 200cm" label="6ft 7in - 200cm">6ft 7in - 200cm</option> <option value="6ft 8in - 203cm" label="6ft 8in - 203cm">6ft 8in - 203cm</option> <option value="6ft 9in - 205cm" label="6ft 9in - 205cm">6ft 9in - 205cm</option> <option value="6ft 10in - 208cm" label="6ft 10in - 208cm">6ft 10in - 208cm</option> <option value="6ft 11in - 210cm" label="6ft 11in - 210cm">6ft 11in - 210cm</option> <option value="7ft - 213cm" label="7ft - 213cm">7ft - 213cm</option> </select>
Мне нужно, чтобы выбранное значение было выбрано, когда форма sbumited, я знаю значение select, но я не хочу сопоставлять с каждым значением параметра, чтобы сделать его выбранным
Так что я ищу, так или иначе (не jquery), чтобы сделать значение, выбранное из самого тега, не используя выбранную опцию в теге
Я попытался установить значение = «некоторое значение» в списке, но он не работал!
Нет.
Несколько параметров могут иметь одинаковое значение и (если установлен multiple
атрибут) одновременно могут быть выбраны несколько параметров, поэтому наличие атрибута для указания значения не представляется возможным.
Вы не можете изменить элемент <select>
чтобы указать это: он не является частью спецификации HTML. Что вы можете сделать, это предоставить каждому элементу option
id
а затем использовать Javascript для установки нужного элемента (-ов) selected
. В PHP вам нужно будет вывести фрагмент сценария в нужное место, чтобы запустить браузер.
Например
<option value="7ft - 213cm" label="7ft - 213cm" id="s23">7ft - 213cm</option> ... <script> document.getElementById("s23").selected=true </script>
Вы всегда можете просто написать вспомогательную функцию, которая дает вам параметр <option>
, передавая его параметры. Что-то вроде
function get_option($value, $selected_value) { return '<option value="' . $value . '" label="' . $value . '"' . ($value == $selected_value ? ' selected="selected"' : '') . '>' . $value . "</option>\n"; }
Это не позволит вам написать его для каждого значения, но вместо этого просто сделайте
$selected_value = '4ft 5in - 134cm'; echo get_option('4ft 5in - 134cm', $selected_value); echo get_option('4ft 6in - 137cm', $selected_value); //etc, etc
Вы можете поместить все элементы в массив и динамически генерировать список с помощью цикла for (или foreach). Затем просто проверьте в этом цикле, соответствует ли ваш loopvariable ваше значение, и если да, назначьте выбранный атрибут.
Что-то вроде этого:
<select name="height" id="height"> <option value="" label="Select">Select Height</option> <?php $options = array("4ft 5in - 134cm", "4ft 6in - 137cm", "4ft 7in - 139cm", /* and all your other options ... */); $yourvalue = "4ft 6in - 137cm"; // or any valid entry foreach($options as $option) { echo '<option value="'.$option.'" label="'.$option.'" '. ($option == $yourvalue ? 'selected' : '') .'>'.$option.'</option>'; } ?> </select>
Если вы не хотите использовать javascript, вам придется писать код, которого вы избегаете.
<? $selected = "6ft 10in - 208cm"; ?> <select name="height" id="height"> <option value="" label="Select">Select Height</option> <? foreach ( $options as $option ): ?> <option value="<?= $option; ?>" <?= ($option == $selected ? "selected" : ""); ?> ><?= $option; ?></option> <? endforeach; ?> </select>