Javascript更改和点击事件不同时触发

时间:2015-10-30 17:58:45

标签: javascript events onclick onchange

我有一个textarea或输入,我更改了文本,然后单击一个链接或按钮(没有选中输入),只触发change事件,而不是click事件。我希望他们两个都开火:

Enter some text and then click the link. We want f1 and f2 to appear !
<br />
<input onchange="f1();" value="input text" />
<br />
<a href="" onclick="f2();">click me</a>


function f1() {
    alert("f1");
    return true;
}

function f2() {
    alert("f2");
    return true;
}

http://jsfiddle.net/paull3876/vrcfherp/3/

我已经尝试过如上所述的jquery和普通js,我在函数内部尝试了setTimeouts,我尝试过输入和textarea,但无论我做什么,只有f1触发。

更新1

所以我们已经确定警报会杀死任何后续事件 - 很好。 Fiddle

现在的挑战是,如何在对象中堆叠这些事件,以便每个事件都可以触发警报(或确认,或......)并且不阻止任何未来事件。我只想尝试不同的想法。还有更多......

更新2

我编写了一些代码来堆叠函数,然后在最后执行它们。它不漂亮(它应该包装在一个类中),但它的工作原理:

http://jsfiddle.net/paull3876/vrcfherp/9/

2 个答案:

答案 0 :(得分:1)

alert()是模态的,因为input关注其他元素mousedown,所以没有点击事件。

因此,请开始使用console进行调试。

答案 1 :(得分:1)

此行为是由阻止警告模式引起的。

浏览器会一个接一个地触发事件。在这种情况下,优先级必须是

  1. onChange事件<input>
  2. <a>
  3. 的onClick事件

    但是当它首次执行onChange输入时,它会阻止alert阻止其他事情,因此不会触发onClick of anchor标记的事件。

    如果您从提醒更改为console.log

    ,请检查this