首页 > 解决方案 > 将相同的响应附加到多个听众时得到奇怪的结果

问题描述

我将一个按钮附加submit()到一个按钮和回车键。在新页面上,它们都附加并正常运行submit()一次。该问题在单击事件运行后出现,然后按键事件开始运行submit()两次而不是一次,而单击继续正常响应。

我觉得我以前做过这个并在实施 a getSubmit()with someif()或返回某些东西后解决了它(或只是错过了),但我觉得这应该可行。

var bindCtrlr = (function() {

    var submit = () => console.log('hi')

    document.querySelector('.add__btn').addEventListener('click', submit, false)

    document.addEventListener('keypress', function(e) {
        if (e.keyCode === 13 || e.which === 13) {
            submit()
        }
    }, false)

})()

单击或按下回车键时,submit()始终运行一次。.add__btn

标签: javascripteventsevent-handlingdom-events

解决方案


它触发两次的原因是按钮单击事件也在输入时触发。但是如果单击后焦点仍然在按钮上,它只会触发两次。当焦点不在按钮上时,它只会触发一次。希望这会帮助你。


推荐阅读