我有一个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
我编写了一些代码来堆叠函数,然后在最后执行它们。它不漂亮(它应该包装在一个类中),但它的工作原理:
答案 0 :(得分:1)
alert()
是模态的,因为input
关注其他元素mousedown,所以没有点击事件。
因此,请开始使用console
进行调试。
答案 1 :(得分:1)
此行为是由阻止警告模式引起的。
浏览器会一个接一个地触发事件。在这种情况下,优先级必须是
<input>
<a>
但是当它首次执行onChange输入时,它会阻止alert
阻止其他事情,因此不会触发onClick of anchor标记的事件。
如果您从提醒更改为console.log