Можете ли да имате няколко реда в елемент ‹option›?

Има ли начин да има няколко реда в елемент <option>?

Като този:

 -------------------------
| Normal <option> element |
 -------------------------
| <option> element broken |
| onto two lines          |
 -------------------------
| Normal <option> element |
 -------------------------

Има ли някакъв HTML/CSS подход или трябва да използвам JavaScript?


person Upvote    schedule 20.01.2011    source източник
comment
какво означават няколко реда в елемент на опция?   -  person Vivek    schedule 20.01.2011
comment
обикновено имате един ред в елемент на опция, който избирате, аз искам да имам два реда в този елемент, така че напр. всяка опция има 2 реда   -  person Upvote    schedule 20.01.2011
comment
възможен дубликат на многоредови опции в htm select   -  person Mark Rogers    schedule 19.11.2014
comment
Възможен дубликат на Опции за пренасяне на думи в избран списък   -  person DavidRR    schedule 02.07.2018


Отговори (5)


Това е частен случай на показване на HTML тагове вътре в елемент <option></option>. Доколкото знам, браузърите се държат много различно в тази област (Firefox показва дори изображения, други браузъри игнорират повечето или всички тагове) и няма решение за кръстосани браузъри. Вероятно ще трябва да го емулирате с JavaScript и различно маркиране.

На http://www.w3.org/TR/2011/WD-html-markup-20110113/option.html казват:

Разрешено съдържание: нормални символни данни

... което е дефинирано на http://www.w3.org/TR/2011/WD-html-markup-20110113/syntax.html#normal-character-data

Спецификацията е трудна за разбиране, както обикновено, но разбирам, че не можете да вмъкнете литерал < (т.е. HTML таг като <br>). Не мога да намеря къде определя поведението с празно пространство, но повечето браузъри изглежда го свиват.

person Álvaro González    schedule 20.01.2011

Това може да не е това, което искате, но можете да получите два реда на опция, като използвате маркера „optgroup“, напр.:

<select>
  <optgroup label="Click below for 'yes'">
    <option value="yes">Yes</option>
  </optgroup>
  <optgroup label="Click below for 'No'">
    <option value="no">No</option>
  </optgroup>
</select>
person Neil    schedule 20.01.2011
comment
Това няма да позволи ЕДНА опция да бъде разделена на ДВА реда - person Ben Sewards; 14.09.2012
comment
HotKey, строго погледнато си прав. Това, което предложих, дава ефект на разделяне на опция на два реда (вижте jsfiddle.net/elusien/Sqc6Z). Която и опция да избере потребителят, се връща само вторият ред. В моя защита казах, че това може да не е това, което се иска. - person Neil; 14.09.2012
comment
Всъщност идеята ви за разделяне на опцията и отлагане на група изобщо не изглежда лоша идея. Но като го кажем, как ще работи с източник на данни? - person Ben Sewards; 16.09.2012
comment
Абсолютно брилянтно! - person iconoclast; 17.04.2014

Проблемът с select е, че те са елементи на формуляр на OS, за разлика от елементите на уеб формуляр. Ето защо не е възможно да ги стилизирате в някои браузъри (cough... IE6) за разлика от други входове. Виждали ли сте пример за това някъде? Тъй като операционната система не поддържа това, браузърът също няма да го направи.

Също така бих посочил, че не е много удобен за потребителя. Потребителите са свикнали с идеята за поле за избор, съдържащо опции на единични редове. Ако започнете да ги поставяте на няколко реда, вие се противопоставяте на използваемостта и присъщата достъпност на полето за избор. Може да не е толкова добра идея да поемете по този маршрут.

Само мое мнение, но се надявам да има смисъл.

person tadywankenobi    schedule 20.01.2011
comment
Тъй като този отговор е на почти 3,5 години, бих добавил сега, че има множество JS библиотеки за рестартиране на полето за избор. Някои от тях, поради самото си естество, принудително избират опции на два реда. Ако това все още е проблем за хората там, тогава това може да е опция. Само имайте предвид, че много от библиотеките за стилизиране не се поддържат на iOS или Android. - person tadywankenobi; 17.04.2014

Страхувам се, че не. Браузърите изглежда игнорират символите за нов ред и HTML <br> таговете в <option> елементи и не мисля, че JavaScript предоставя някакъв начин за манипулиране на начина, по който се появява този текст.

person Paul D. Waite    schedule 20.01.2011

Не, ще трябва да създадете персонализиран падащ списък за такова нещо.

jQuery предлага много от тях; вероятно можете да използвате CSS, за да дефинирате height за конкретни опции, за да постигнете това, от което се нуждаете.

person Shadow Wizard Wearing Mask V2    schedule 20.01.2011