Javascript更改并单击事件don';不要两者都开火

Javascript更改并单击事件don';不要两者都开火,javascript,events,onclick,onchange,Javascript,Events,Onclick,Onchange,我有一个文本区域或输入,我更改文本,然后单击链接或按钮(不关闭输入),只有更改事件触发,而不是单击事件。我要他们两个都开火: 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

我有一个文本区域或输入,我更改文本,然后单击链接或按钮(不关闭输入),只有更改事件触发,而不是单击事件。我要他们两个都开火:

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;
}
输入一些文本,然后单击链接。我们希望f1和f2出现!


函数f1(){ 警报(“f1”); 返回true; } 函数f2(){ 警报(“f2”); 返回true; }

如上所述,我用jquery和普通js进行过尝试,我在函数中尝试过设置超时,我尝试过输入和文本区域,但无论我做什么,都只会触发f1

更新1

因此,我们已经确定警报会杀死任何后续事件-很好

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

更新2

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

alert()
是模态的,因为
输入
在鼠标向下移动时失去了对其他元素的关注,所以没有触发单击事件


因此,开始使用
控制台进行调试。

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

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


  • 如果您从alert更改为console.log,单击事件
    ,您的小提琴在Chrome中对我起了作用。首先执行此操作
    f2(e){e.preventDefault()…}
    ,然后请进一步解释,您想在按下后在f2之后执行f1?开始停止
    alert()
    (这是模态的,因为没有触发点击事件)出于调试目的,Safari(9.0.2)也可以运行,只有Firefox(这里是43.0a2)的行为与OPIt中描述的一样,在chrome、FF或IE中对我不起作用。谢谢,在我的应用程序中没有警报,但我看到了相同的行为“阻塞模式”评论可能是原因。我正在尝试一些事情,并将更新..Thanksher是一个小提琴来确认它在没有警报的情况下工作:很好。更重要的是,当警报弹出时,我们甚至不能滚动浏览器窗口。无论如何,这个问题引起了很多注意。:)但这确实很痛苦,因为有一种情况下,我需要在第一次事件中向用户弹出一个问题。我仍然希望第二个事件单击启动,但它没有启动。我必须使用超时,我想我不确定超时是否有帮助,因为事件本身并没有生成。可能正在重新设计,比如在onClick和for onChange中包含什么可以解决问题。视情况而定。您已更新了问题,但无法堆叠/收集根本未生成的事件。