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 中)但它有效:
alert()
是模态的,因为 input
失去了对其他元素 mousedown 的关注,所以没有触发点击事件。
所以开始使用 console
进行调试。
此行为是由于警报阻塞模式造成的。
浏览器会依次触发事件。在这种情况下,优先级必须是
<input>
的 onChange 事件
<a>
的 onClick 事件
但是当它第一次执行输入的onChange时,它遇到了alert
,它阻止了其余的东西,因此没有触发anchor标签的onClick事件。
如果您从警报更改为 console.log
,请选中 this
我有一个文本区域或输入,我更改了文本,然后单击 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 中)但它有效:
alert()
是模态的,因为 input
失去了对其他元素 mousedown 的关注,所以没有触发点击事件。
所以开始使用 console
进行调试。
此行为是由于警报阻塞模式造成的。
浏览器会依次触发事件。在这种情况下,优先级必须是
<input>
的 onChange 事件
<a>
的 onClick 事件
但是当它第一次执行输入的onChange时,它遇到了alert
,它阻止了其余的东西,因此没有触发anchor标签的onClick事件。
如果您从警报更改为 console.log