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

标签 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 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

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

更新 2

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

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

最佳答案

此行为是由于警报的阻止模式

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

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

但是当它第一次执行 onChange of input 时,它遇到了 alert这会阻止其余的事情,因此不会触发 anchor 标记的 onClick 事件。

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

关于Javascript Change 和 Click 事件不会同时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33442180/

相关文章:

jquery - 当您使用 .html() 删除元素时,jQuery 中的事件监听器是否会自动删除?

mysql - mysql数据库中的字段作为函数的参数?

javascript - 在 JavaScript 函数中传递字符串参数

javascript - DOM 为子 Javascript 分配一个 id

javascript - 如何为gapi添加onload事件?

javascript - 有没有一种方法可以在不调用任何处理程序的情况下使用 jQuery(或常规 DOM API)触发事件

javascript - 事件未触发(onclick)

javascript - Windows 8 应用程序在手指滑动时触发事件

javascript - 同时运行 gulp 和 express

java - 如何禁用 imageview 事件?