Или с помощью плоскости HTML или jQuery помогли JavaScript, как Вы отображаете подсказки на человеке элементы для помощи процессу принятия решений (существует недостаточно места для другого вида управления, и некоторая помощь будет необходима).
Это может быть сделано хотя плагин или подобное?
Я попробовал несколько плагинов подсказки за jQuery без успеха (включая тот под названием Подсказка).
Это решение должно:
перенесенный
элементы.Таким образом, если решение хочет использовать другие теги, оно должно преобразовать те элементы в то, в чем оно нуждается динамично (и не ожидают, что начальная разметка будет несколько отличаться).
Код для этого может быть найден здесь, он находится под разделом SafeSurf, где я хочу отобразить некоторую справку на трансформации опций относительно значения выбора. В настоящее время это может только быть отображено "после факта", и некоторая первичная справка для пользователя была бы выгодна.
Цените, что это не легко и что что-то должно будет, вероятно, быть создано - таким образом, щедрость будет присуждена большей части полного решения или определенному рычагу, который сажает меня самый близкий к решению, которое я могу создать.
По крайней мере, в firefox, вы можете установить атрибут "title" на тег опции:
Я не думаю, что это можно сделать во всех браузерах.
W3Schools сообщает, что события опции существуют во всех браузерах, но после настройки этой тестовой демонстрации . Я могу заставить его работать только для Firefox (не Chrome или IE), я не тестировал его в других браузерах.
Firefox также позволяет использовать mouseenter и mouseleave, но об этом не сообщается на странице w3schools.
Обновление: честно говоря, глядя на предоставленный вами пример кода, я бы даже не стал использовать поле выбора. Думаю, было бы лучше с ползунком . Я обновил вашу демонстрацию . Мне пришлось внести несколько незначительных изменений в ваш объект оценок (добавив номер уровня) и вкладку safesurf. Но почти все остальное я оставил нетронутым.
Я только что попытался сделать это в Chrome:
var $sel = $('#sel'); $sel.find('option').hover(function(){$sel.attr('title',$(this).attr('title'));console.log($(this).attr('title'))}, function(){$sel.attr('title','');});
Однако при наведении курсора никогда не срабатывает ... Так что вы вообще не сможете сделать это, используя стандартный выбор. Вы можете добиться этого несколькими нестандартными способами:
Я не верю, что вы можете достичь этой функциональности с помощью стандартного элемента
.
Я бы посоветовал использовать такой способ.
http://filamentgroup.com/lab/jquery_ipod_style_and_flyout_menus/
Базовая версия не займет слишком много места, и вы можете легко привязать события mouseover
к подпунктам, чтобы показать приятный всплывающая подсказка.
Надеюсь, это поможет, Синан.
Зачем вообще использовать выпадающий список? Пользователь увидит пояснительный текст, только наведя курсор на один из вариантов.
Я думаю, было бы предпочтительнее использовать группу радиокнопок, а рядом с каждым пунктом поместить значок всплывающей подсказки, указывающий дополнительную информацию, а также отображать ее после выбора (как у вас сейчас).
Я понимаю, что это не совсем решает вашу проблему, но я не вижу смысла бороться с html-элементом, который печально известен своей негибкостью, когда можно просто использовать тот, который лучше подходит в первую очередь.
Если доступно увеличение количества видимых опций, следующее может сработать для вас:
<html>
<head>
<title>Select Option Tooltip Test</title>
<script>
function showIETooltip(e){
if(!e){var e = window.event;}
var obj = e.srcElement;
var objHeight = obj.offsetHeight;
var optionCount = obj.options.length;
var eX = e.offsetX;
var eY = e.offsetY;
//vertical position within select will roughly give the moused over option...
var hoverOptionIndex = Math.floor(eY / (objHeight / optionCount));
var tooltip = document.getElementById('dvDiv');
tooltip.innerHTML = obj.options[hoverOptionIndex].title;
mouseX=e.pageX?e.pageX:e.clientX;
mouseY=e.pageY?e.pageY:e.clientY;
tooltip.style.left=mouseX+10;
tooltip.style.top=mouseY;
tooltip.style.display = 'block';
var frm = document.getElementById("frm");
frm.style.left = tooltip.style.left;
frm.style.top = tooltip.style.top;
frm.style.height = tooltip.offsetHeight;
frm.style.width = tooltip.offsetWidth;
frm.style.display = "block";
}
function hideIETooltip(e){
var tooltip = document.getElementById('dvDiv');
var iFrm = document.getElementById('frm');
tooltip.innerHTML = '';
tooltip.style.display = 'none';
iFrm.style.display = 'none';
}
</script>
</head>
<body>
<select onmousemove="showIETooltip();" onmouseout="hideIETooltip();" size="10">
<option title="Option #1" value="1">Option #1</option>
<option title="Option #2" value="2">Option #2</option>
<option title="Option #3" value="3">Option #3</option>
<option title="Option #4" value="4">Option #4</option>
<option title="Option #5" value="5">Option #5</option>
<option title="Option #6" value="6">Option #6</option>
<option title="Option #7" value="7">Option #7</option>
<option title="Option #8" value="8">Option #8</option>
<option title="Option #9" value="9">Option #9</option>
<option title="Option #10" value="10">Option #10</option>
</select>
<div id="dvDiv" style="display:none;position:absolute;padding:1px;border:1px solid #333333;;background-color:#fffedf;font-size:smaller;z-index:999;"></div>
<iframe id="frm" style="display:none;position:absolute;z-index:998"></iframe>
</body>
</html>