2012-01-08 3 views
1

私は、選択されたときにいくつかのアクションを実行するHTMLオプション要素があります。だから私はそれをonmousedownイベント&に反応させて、そのイベントに対してアクションを実行させました。HTMLオプションはSafariのonmousedownのみに反応しません

問題:コードはFirefoxでのみ動作します。 Safariでは、イベントは発生しませんか?コードは実行されません。なぜこれが起こっているのか知っていますか?私はonselectやonchangeのような別のイベントに反応するべきでしょうか?

これは私がやっていることの簡単な例です(私はコードonmousedownの多くを実行しますが、ここでは単純化のための警告です)。あなたが見るように、アラートがFirefoxで発生するが、それは何らかの理由でSafariで動作しません:あなたはlistbox-でそれをクリックした場合

<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> 

答えて

2

それはOnMouseDownイベントのように見えますが、唯一の選択肢のために解雇されます選択はmultiple="true"で選択します。 「通常の」選択からドロップダウンしたときにそのオプションをクリックしても、イベントは発生しません。

Demo


たぶん私は、このようなONSELECTなど、さまざまなイベントに反応するかの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

はい、私はonchangeイベントを使用します