【发布时间】:2015-10-30 17:58:45
【问题描述】:
我有一个文本区域或输入,我更改了文本,然后单击链接或按钮(不关闭输入),仅触发更改事件,而不触发单击事件。我希望他们俩都开火:
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
我编写了一些代码来堆叠函数,然后在最后执行它们。它并不漂亮(它应该被包装在一个类中)但它可以工作:
【问题讨论】:
-
你的小提琴在 Chrome 中对我有用。
-
先做这个
f2(e){e.preventDefault() .... }然后再解释一下,你想在f2之后按click执行f1吗? -
开始停止
alert()(这是模态的,因为没有触发点击事件,只有mousedown)用于调试目的jsfiddle.net/vrcfherp/4 -
在 Safari (9.0.2) 中也可以使用,只有 Firefox(此处为 43.0a2)的行为与 OP 中描述的一样
-
它在 chrome、FF 或 IE 中对我不起作用。
标签: javascript events onclick onchange