Любой способ определить выбранный внутри тега ‹select›, а не в ‹option›

У меня есть странный список опций 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>

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

Итак, что я ищу, так или иначе (не jquery), чтобы сделать значение, выбранное из самого тега, без использования выбранного параметра в теге

Я пытался установить значение = "какое-то значение" в выборе, но это не сработало!


person Rohith Raveendran    schedule 03.05.2012    source источник
comment
Когда вы говорите (не jquery), вы имеете в виду javascript вообще?   -  person Joe Flynn    schedule 03.05.2012
comment
нет, я хочу сделать это на стороне сервера, я ищу альтернативное решение для сравнения значений параметров и пометки параметра как выбранного, поскольку утомительно писать код для всех параметров.   -  person Rohith Raveendran    schedule 03.05.2012


Ответы (5)


No.

Несколько параметров могут иметь одно и то же значение, и (если установлен атрибут multiple) несколько параметров могут быть выбраны одновременно, поэтому наличие атрибута для указания значения было бы невозможным.

person Quentin    schedule 03.05.2012
comment
то, что я ищу, - это альтернативное решение для сравнения значений параметров и пометки параметра как выбранного на стороне сервера (php), поскольку его утомительно писать код для всех вариантов. - person Rohith Raveendran; 03.05.2012
comment
@RohithRaveendran, конечно, ваши параметры должны быть в массиве, который вы все равно зацикливаете, так что это будет означать, что вы добавляете его только один раз? Если это не так, это должен быть шаг 1. - person Nick; 03.05.2012
comment
Но здесь я не могу зациклиться, пожалуйста, посмотрите на значения :( Они вводятся вручную! - person Rohith Raveendran; 03.05.2012
comment
Вручную введите их в массив или базу данных (вместо HTML-документа). - person Quentin; 03.05.2012
comment
@RohithRaveendran Я предлагаю вам взглянуть на мое решение. Значения, которые вы можете просто вручную добавить в массив (или получить значения откуда-то еще). - person Styxxy; 03.05.2012
comment
@Styxxy Спасибо, я действительно хотел бы, чтобы в html была какая-то опция, чтобы добавить ее, определив опцию выбора :( но, к сожалению, теперь мне придется использовать ваш метод или метод javascript :) - person Rohith Raveendran; 03.05.2012
comment
Да, к сожалению, другого выхода нет. - person Styxxy; 03.05.2012

Вы не можете изменить элемент <select>, чтобы указать это: это не часть спецификации HTML. Что вы можете сделать, так это присвоить каждому элементу option значение id, а затем использовать Javascript, чтобы установить правильные элементы option как selected. В PHP вам нужно будет вывести фрагмент скрипта в нужном месте, чтобы браузер его запустил.

Например

<option value="7ft - 213cm" label="7ft - 213cm" id="s23">7ft - 213cm</option>
...
<script>
document.getElementById("s23").selected=true
</script>
person Andrew Leach    schedule 03.05.2012
comment
Это хорошее решение, только ТС не хотел решения на JavaScript (я предполагаю, что он имел в виду это, говоря не jquery). - person Styxxy; 03.05.2012
comment
@Styxxy Да, вскоре появится редактирование (когда я ответил, там было написано jquery, и комментария тоже не было). Тем не менее, это решение по-прежнему позволяет одной строке php-кода выводить строку Javascript для клиента и, кроме установки id, что в любом случае является хорошей практикой, не требует изменений в списке, который уже был закодирован. - person Andrew Leach; 03.05.2012

Вы всегда можете просто написать вспомогательную функцию, которая даст вам <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
person jprofitt    schedule 03.05.2012

Вы можете поместить все элементы в массив и динамически сгенерировать список с помощью цикла for (или foreach). Затем просто проверьте в этом цикле, соответствует ли ваша переменная цикла вашему значению, и если да, назначьте выбранный атрибут.

Что-то вроде этого:

<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>
person Styxxy    schedule 03.05.2012
comment
Очень хорошее решение для динамического добавления выбранного атрибута в сгенерированный элемент option. Спасибо! - person Leonidas; 17.02.2015

Если вы не хотите использовать 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>
person Joe Flynn    schedule 03.05.2012