Всеки начин за дефиниране на избрани вътре в таг ‹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>

Трябва да направя определена стойност, която да бъде избрана, когато формулярът е изпратен, знам стойността на select, но не искам да съпоставям стойността на всяка опция, за да я направя избрана

Така че това, което търся, все пак има (не jquery), за да направя стойност, избрана от самия маркер, без да използвам избраната опция в маркера

Опитах се да задам value="some value" в select, но не работи!


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

защото вашата икона плюс е извън .project-thumbnail, което се задейства при напускане на мишката. опитайте да го поставите вътре в .project-thumbnail и да промените js и css след това.

нещо подобно http://jsfiddle.net/bondythegreat/Em4wh/

- 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
Това е добро решение, само че TS не искаше 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
Много хубаво решение за динамично добавяне на избран атрибут в генериран елемент на опция. Благодаря! - 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