javascript return false vs preventdefault焦点更改

时间:2018-06-27 13:25:38

标签: javascript html event-handling focus

https://jsfiddle.net/5f19mz0y/21/

我正在寻找防止按下Tab键时焦点从输入框逃脱的方法。然后,我发现了使用preventDefault()进行onkeydown事件的几种方法。因此,由于返回false具有同时使用preventDefault()stopPropagtion()的效果,所以我认为return false可以代替做同样的事情,但是经过测试,事实证明它并没有不能以这种方式工作。

<script>
function tab( event ) {

    if ( event.keyCode === 9)
    {
event.preventDefault(); //- focus doesn't change

        }
}
</script>
<input onkeydown="tab(event);">

以上代码按预期工作;按下Tab键时,焦点不会改变。

<script>
function tab( event ) {

    if ( event.keyCode === 9)
    {
return false; //- focus changes

        }
}
</script>
<input onkeydown="tab(event);">

对于上面的代码,当按下Tab键时焦点会改变

有人可以向我解释原因吗?


已添加

<script>
 function tab( event ) {

    if ( event.keyCode === 9)
    {
event.preventDefault();
event.stopPropagation();//- focus not changes

        }
}
</script>
<input onkeydown="tab(event);">

考虑到stopPropagation()中的return false影响结果的情况,就像上面一样,我也对preventDefault()stopPropagation()进行了测试。但是,这也很好,就像单独使用preventDefault()的情况一样;结果与return false的结果不同。因此,似乎return false中除了preventDefault()stopPropagation()

还有更多东西

1 个答案:

答案 0 :(得分:0)

来自Javascript事件处理程序的

Returning false等同于调用e.preventDefaulte.stopPropagation

所以区别在于preventDefault仅阻止发生默认事件操作,即,在单击链接,提交表单等时页面重定向,而return false也将停止事件流

More Detail See Here