onmousedown事件停止输入焦点

时间:2014-09-16 07:41:13

标签: javascript input focus onmousedown

我正在处理mousedown& oncontextmenu事件,以防止文本和图像选择,右键单击并拖动。代码如下 -

<body oncontextmenu="return false;" onmousedown="event.preventDefault ? event.preventDefault() : event.returnValue = false"> 
    <input type="text" name="testInput" id="testInput">
</body>

我想问题是它也阻止了对输入元素的关注,因为我正在阻止默认&amp;为onmousedown事件返回false,所以它不会让控制切换到输入焦点,所以我不能在其中键入任何内容。我尝试通过以下代码进行调试。

<script type="text/javascript">
    $(function(){
        $( "#testInput" ).on("focus",function(){
           console.log("input focused");
        });
    });
</script>

当我从body中删除onmousedown属性时,它会在cosole上给我所需的消息。

任何帮助......提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以检查mousedown / contextmenu事件是否发生在任何内部元素上,如果是,则允许默认操作,如果不是,则使用下面的

来阻止默认操作
document.getElementsByTagName("div")[0].addEventListener("mousedown",function(e){
    if(e.target.id=="testInput"){

    } else{
      e.preventDefault();
    }

});

document.getElementsByTagName("div")[0].addEventListener("contextmenu",function(e){
    if(e.target.id=="testInput"){

    } else{
      e.preventDefault();
    }

});

Check the Fiddle