У меня есть ИЗБРАННЫЙ элемент с атрибутом НЕСКОЛЬКИХ. При двойном щелчке по опции в списке я хочу принять меры на основе нажимаемой опции.
Я понимаю, что элемент ОПЦИИ не обрабатывает ondblclick событие. Если я обрабатываю dblclick событие ИЗБРАННОГО элемента, есть ли некоторый способ, которым я могу определить, по какой опции дважды щелкнули?
<select size="4" name="MySelect" multiple="multiple" ondblclick="myFunction();">
<option ... />
...
</select>
Предпочтительно перекрестный браузер, но IE только сделал бы.
Править
Я, очевидно, не был достаточно ясен. То, что я должен сделать, определяют, по какой опции дважды щелкнули из обработчика событий (или что двойной щелчок был в области ИЗБРАННОГО элемента без опции). Поиск selectedIndex не сделает, поскольку ИЗБРАННЫЙ элемент имеет НЕСКОЛЬКО, припишите: если пользователь будет держать CTRL или SHIFT при двойном щелчке, то больше чем один объект будет выбран: Я только хочу опцию, по которой на самом деле дважды щелкнули.
Попробуйте следующее:
document.getElementById('selectID').ondblclick = function(){
alert(this.selectedIndex);
// or alert(this.options[this.selectedIndex].value);
};
Если вы дважды щелкните элемент, вы выберете его и сможете использовать this.selectedIndex.
Почему вы не можете прикрепить событие к опциям? Здесь все работает нормально (проверено с jquery и без него в Firefox 3.6).
<select size="4" name="MySelect" multiple="multiple">
<option>hello</option>
<option>aoeu</option>
<option>ieao</option>
<option>.yao</option>
</select>
<script type="text/javascript">
$(function(){
$("option").bind("dblclick", function(){
alert($(this).text());
});
});
</script>
Следуя тому, что написал Хармен ... следующее будет предупреждать значение параметра двойного щелчка ... (кросс-браузер)
document.getElementById('selectID').ondblclick = function(e){
var evt = window.event || e;
var elem = evt.srcElement || evt.target;
alert(elem.value);
};