|
|
|
Forum Guru
      
участник
Last Login: 24.01.2008 14:59
Сообщ.: 68,
Visits: 545
|
|
| Вопрос: как поменять цвет выделения в select'е с стандартного темно-синего на другой?
|
|
|
|
|
Forum Guru
      
участник
Last Login: 24.01.2008 14:59
Сообщ.: 68,
Visits: 545
|
|
пробовал
option:focus{
background-color:#00FF00;
}
не получилось(
|
|
|
|
|
Supreme Being
      
участник
Last Login: 25.04.2007 11:57
Сообщ.: 77,
Visits: 97
|
|
|
|
|
|
Forum Guru
      
участник
Last Login: 24.01.2008 14:59
Сообщ.: 68,
Visits: 545
|
|
Так вот меня и интересует каким образом хайлайтить.
Все остальное работает, т.е. я перехватываю событие onfocus, и получаю индекс элемента.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 25.04.2007 11:57
Сообщ.: 77,
Visits: 97
|
|
| попробуй применить фильтр, либо object.style.filter="invert()" - инвертирует цвета, либо object.style.filter="mask(color=green)" - параметр - цвет фона, цвет текста станет белым. А, ну да, я понял проблему, ты наверное не метод хайлайта не знаешь а как его применить :) Значит нужно на он клик селекта поставить скрипт которые сначала отменит все предыдущие хайлайты, то есть если ты используешь фильтр как я выше написал то ко всем вложенным елементам применить object.style.filter="none". Дальше надо нужный нам елемент отхайлайтить. Возникает вопрос - как это все сделать? И тут нам поможет то что селект по своей сути является массивом содержащим группу опшнов. Обращение: selectName.elements[i] - получаем объект елементов. Соответственно описанная словами выше функция будет иметь вид: function sselect(index) //переменная - номер выделенного опшна { for (var i=selectName.elements.length-1; i>0; i--) //идем по всем опшнам селекта, с конца в начало { selectName.elements[i].style.filter="none"; //отменяем фильтр который был if (i==index) //если текущий елемент - тот что мы должны выделить то { selectName.elements[i].style.filter="mask(color=green)" //выделяем фильтром } } }
|
|
|
|
|
Forum Guru
      
участник
Last Login: 24.01.2008 14:59
Сообщ.: 68,
Visits: 545
|
|
не получается.
я поменял elements на options так как совсем ничего не работало.
и в style жестко пробовал прописать - не получилось.
option class="ch_" style="filter:mask(color=green)"
даже в хинтах не нашел filter.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 25.04.2007 11:57
Сообщ.: 77,
Visits: 97
|
|
| да, не elements я описался - не туда глянул в доке ) но и не item а options ДЕйствительно фильтры не применяются ни к селекту вцелом ни к опшнам в частности, но в принципе я посмотрел - опшну можно поставить стиль цвета и фона отдельно от других опшнов. Вот, скрипт выделяет то что нам надо нужным бекграундом, при желании в строку можно добавить любое выделение стилями. Единственное чего не хаватает - не убирается системное выделение, потому все зря :). Не знаю пока как системное выделение убрать. function sselect(j) //переменная - номер выделенного опшна { for (var i=(window.document.getElementById("sel").options.length-1); i>=0; i--) //идем по всем опшнам { window.document.getElementById("sel").options[i].style.cssText="background-color:inherit"; //убираем стиль фона который был if (i==j) //если тот елемент что выбран { window.document.getElementById("sel").options[i].style.cssText="background-color:red"; //то ставим наш фон } } } sel - ID нашего селекта
|
|
|
|
|
Supreme Being
      
участник
Last Login: 25.04.2007 11:57
Сообщ.: 77,
Visits: 97
|
|
| Я его сделал! ) function sselect(j) //переменная - номер выделенного опшна { window.document.getElementById("sel").selectedIndex=-1; //отменяет системное выделение - для системы больше нет выделенных елементов! for (var i=(window.document.getElementById("sel").options.length-1); i>=0; i--) //идем по всем опшнам { window.document.getElementById("sel").options[i].style.cssText="background-color:inherit"; //убираем стиль фона который был if (i==j) //если тот елемент что выбран { window.document.getElementById("sel").options[i].style.cssText="background-color:red"; //то ставим наш фон } } } Правда на какую то долю секунды системное выделение все равно проскакивает ). Главное - не забыть что после этих манипуляций для системы выделенных елементов больше нет, так что если ты попробуешь отправить данные формы не обработав выделение вручную то от селекта этого ничего не пошлется.
|
|
|
|
|
| |