为什么 JavaScript 中 return false 就能终止事件

 我来答
ispiders
2017-08-29 · TA获得超过1241个赞
知道小有建树答主
回答量:517
采纳率:80%
帮助的人:207万
展开全部

首先你遇到的场景应该是类似于表单提交的事件吧,如果不是,那我也用表单提交事件来做例子说一下,首先看代码

<form id="formID">
    <input type="text" id="inputID" >
    <input type="submit" value="提交" >
    <input type="button" value="模拟提交" id="submitID">
</form>
<script>
    var form = document.getElementById('formID');
    var input = document.getElementById('inputID');
    var submit = document.getElementById('submitID');

    function submitOrNot (value) {

        if (value === 'yes') {
            return true;
        }
        else {
            return false;
        }
    }

    form.onsubmit = function () {

        // 当点击submit按钮,form表单的submit事件被触发
        // onsubmit return false 则submit事件会被取消
        // 这就是你所提到的场景
        return submitOrNot(input.value);
    };

    ///////////////////////////////////////////////////////////
    // 下面我们大概来模拟浏览器实现点击按钮触发submit事件的过程
    submit.onclick = function () {

        if (typeof form.onsubmit === 'function') {

            if (form.onsubmit() === false) {
                // 当form.onsubmit return false, form 不做提交
                return;
            }
        }

        form.submit();
    }
</script>

所以其实就是在此类事件触发时,浏览器行为约定了如果事件处理函数return false则终止事件。如果我们自己来实现事件机制,我们也可以改变约定,比如return true的时候终止事件,或者其他约定。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式