将相同的响应附加到多个侦听器时得到奇怪的结果

时间:2019-01-28 09:13:37

标签: javascript events event-handling dom-events

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

我觉得我之前已经做过这件事,并且在通过一些getSubmit()实现if()或返回了某些东西之后解决了(或者错过了),但是我觉得这应该可行。

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()或按Enter键后,.add__btn应该始终 运行一次。

1 个答案:

答案 0 :(得分:0)

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