The Diary
Дневникът на Георги
<- Понеделник, 29 Септември 2008 | Начална страница | Сряда, 1 Октомври 2008 ->
Вторник, 30 Септември 2008
Следната задача ми загуби час от днешния работен ден.
В <select> елемент на форма на всеки ред имам следните стойности "xxx_id | description_xxxx", което в момента не изглежда добре визуално понеже xxx_id са с различна дължина и | символите не се подравняват вертикално.
Идеята ми беше на направя select-а като се отвори да изглежда по следния начин:
+---------------+-+ | aa zzz |v| +---------------+-+ | aaa zzzz | | aaaaa ccccc | | aa dd | +---------------+
...обаче това няма как стане поради фактът, че CSS се прилага върху целия option, а не върху части от него (или поне аз не открих начин това да стане).
Имам две възможности да направя горното да изглежда както искам:
1. Правя шрифта на select-а monospace и текста
вътре си го подравнявам с добавяне на подходящ
брой
. Това ще сработи
перфектно, но ще изглежда грозно.
2. Пиша javascript, който при зареждане намира select-a който ме дразни, слага на негово място hidden input, след което стойностите на select-a ги форматира като редове в скрит DIV с точни размери, overflow-y:scroll и onclick събитие. На мястото на select добавя друг div, който при кликване показва и крие div-a със стойностите. Това чудо ще ми осигури изгледа който търся, че дори и по-по-красив, обаче няма да е толкова достъпно като стандартен select. Изобщо май не си заслужава главоболието.
Последния час си го загубих в търсене дали някой не е направил подобно javascript решение за select елементи, но така и не успях да открия точните думи, с които да запитам.
Help!
[ Коментари: 11 ]Коментари
Да, с jQuery би станало сравнително лесно. Довечера може да имам малко време и да ти напиша някое плъгинче.
Въпроса е дали би искал да сложиш framework заради такова нещо :-)
jquery ме кефи, а така или иначе все повече ми трябват разнообразни възможности.
Всъщност това май може да ти свърши работа:
http://www.brainfault.com/jquery-plugins/jquery-selectbox-replacement/
Само ще трябва да бутнеш малко в getSelectOptions, при строенето на <li>-тата да включва в тях и value-то за да може да се вижда. Т.е.:
li.innerHTML = $(this).html();
да стане:
li.innerHTML("<span class='v'></span>" + $(this).html());
и за span.v в css-а:
span.v {display: block; float: right;}
Виж това:
http://developer.yahoo.com/yui/examples/button/btn_example07.html
Може да си форматираш опциите както си искаш.
@tuzemec: Великолепно! Точно това търсех, голямо благодаря.
@свилен: и това върши работа, но май предпочитам jquery плъгина.
Ух...
li.innerHTML("<span class='v'></span>" + $(this).html());
е всъщност:
li.innerHTML("<span class='v'>" + $(this).val() + "</span>" + $(this).html());
:-)
И сега видях, че има една друга простотия... онова в което се изписва избраната стойност е <input>, което не е много куул, понеже тоя спан със value-то ще се изпише вътре в него. :-(
Т.е. или трябва при селектирането да се маха span-а... или да се разкара тоя инпут и да се направи <div> :-(
аз ползвам това нещо http://www.cult-f.net/2007/12/14/elselect/ в комбинация с mootools. Работи като заменя селектите с подобно на това, което си описал.
ето моите доработки и писания по въпроса: http://blog.creonfx.com/javascript/customizable-form-select-dropdown-replacement-with-mootools
jQuery рулира.
Disclaimer: Except where otherwise noted all opinions expressed here are personal
opinions of the author and do not reflect official opinions of my employer or
any other person, company or organization associated with the author.
Copyright: Except where otherwise noted the content of this site is licensed under a
Creative Commons Attribution License. Текстът на договора за ползване на български
Copyright (cc) 2003-2011 Georgi Chorbadzhiyski. Some rights reserved.
Comments, texts and pictures not signed by me are property of their respective owners.
Страницата е генерирана от Glog v3.99-test
get rid of the select all together and build couple of divs/spans to do what you want ... with a little bit of imagination this should be a good start: http://www.learningjquery.com/2006/09/slicker-show-and-hide
Написа xeno на 01-Oct-2008 00:54