Javascript Change 和 Click 事件不会同时触发

Javascript Change and Click events don't both fire

我有一个文本区域或输入,我更改了文本,然后单击 link 或按钮(不关闭输入),仅触发更改事件,而不触发单击事件。我希望他们都开火:

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,我试过 input 和 textarea,但无论我做什么,只有 f1 触发。

更新 1

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

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

更新 2

我写了一些代码来堆叠函数,然后在最后执行它们。它不漂亮(应该包裹在 class 中)但它有效:

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

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

所以开始使用 console 进行调试。

此行为是由于警报阻塞模式造成的。

浏览器会依次触发事件。在这种情况下,优先级必须是

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

但是当它第一次执行输入的onChange时,它遇到了alert,它阻止了其余的东西,因此没有触发anchor标签的onClick事件。

如果您从警报更改为 console.log

,请选中 this