代码之家  ›  专栏  ›  技术社区  ›  Ben Everard

select元素的click(mousedown)事件

  •  0
  • Ben Everard  · 技术社区  · 15 年前

    我有一个空的select元素,我想在单击该元素时执行一些代码,但我不希望出现下拉列表,以下是我发现的:

    1. 禁用select元素时,无法捕获mousedown事件。
    2. 当我启用select元素时,我可以捕获mousedown事件,但会出现下拉列表。

    为了便于讨论,我希望能够单击select元素,javascript来抛出一个警告框,但我希望阻止下拉列表显示。

    谢谢!

    3 回复  |  直到 13 年前
        1
  •  2
  •   gp.    15 年前

    捕获 onmousedown 事件选择元素并通过设置取消事件 event.returnValue 错了。

    <script type="text/javascript">
        function onSelectMouseDown() {
            event.returnValue = false;
            alert("mouse down caught and cancelled");
        }
    </script>
    
    <select id="select" onmousedown="onSelectMouseDown();"></select>
    
        2
  •  0
  •   TomaszO    15 年前

    为什么不禁用select元素并将select元素包装在与select元素具有相同高度和宽度的DIV(或其他类型)中,并将mousedown事件与此DIV一起使用?

        3
  •  0
  •   TomaszO    15 年前
    <script>
    function makeDisable(){
        var x=document.getElementById("mySelect")
        x.disabled=true
    }
    function makeEnable(){
        var x=document.getElementById("mySelect")
        x.disabled=false
    }
    function f() {
    makeDisable();
    alert("something");
    t=setTimeout("makeEnable();",1);
    }
    </script>
    
    <select id="mySelect" onMouseDown="f();">
      <option value="opt1">Option 1</option>
      <option value="opt2">Option 2</option>
    </select>