HTML опция не будет реагировать на onmousedown ТОЛЬКО в Safari - PullRequest
1 голос
/ 08 января 2012

У меня есть элемент опции HTML, который я хочу выполнить, когда он выбран.Поэтому я заставил его реагировать на событие onmousedown и заставил его выполнять действия с этим событием.

Моя проблема: Код работает только в Firefox.В Safari событие никогда не срабатывает?Код никогда не выполняется.Вы знаете, почему это происходит?Может быть, мне следует реагировать на другое событие, такое как onselect или onchange?

Это простой пример того, что я делаю (я выполняю много кода в mousedown, но здесь это просто предупреждение для простоты).Как вы увидите, предупреждение появляется в Firefox, НО по какой-то причине оно не работает в Safari:

<html>
<head>
</head>
<body>
    <select>
        <option id="a1">1</option>
        <option id="a2">2</option>
        <option id="a3">3</option>
        <option id="a4">4</option>
        <option id="a5">5</option>
    </select>
</body>
    <script type="text/javascript">
    <!--
        document.getElementById("a1").addEventListener("mousedown", function(e) { alert("A"); return true; }, false); 
        document.getElementById("a2").addEventListener("mousedown", function(e) { alert("b"); }, false); 
        document.getElementById("a3").addEventListener("mousedown", function(e) { alert("c"); }, false); 
        document.getElementById("a4").addEventListener("mousedown", function(e) { alert("d"); }, false); 
        document.getElementById("a5").addEventListener("mousedown", function(e) { alert("e"); }, false); 
    -->
    </script>
</html>

1 Ответ

2 голосов
/ 08 января 2012

Похоже, что событие onmousedown вызывается только для параметра, если вы щелкнете по нему в списке - выбор с multiple="true". Нажатие на опцию, когда она выпадает из «обычного» выбора, похоже, не вызывает событие.

Демо


Может быть, мне следует отреагировать на другое событие, например onselect или onchange?

Да , я бы использовал событие onchange:

<select id="sel">
    <option id="a1">1</option>
    <option id="a2">2</option>
    <option id="a3">3</option>
    <option id="a4">4</option>
    <option id="a5">5</option>
</select>

document.getElementById("sel").onchange = function(e) { alert(this.value); };

DEMO

...