浏览器在onchange之前听到onclick

时间:2018-09-11 23:47:52

标签: javascript jquery html

在浏览器检查表单是否有任何更改(“ onchange”)之后,我将需要任何“单击”才能运行。有可能吗?

例如:

    <input type="text" onchange="alert('CHANGED!')">
    <a href="javascript:alert('CLICKED!')">click here</a>

更改上面的输入元素后,当我单击链接时,总是在输入onchange事件之前调用onclick事件。你可以逆转吗?

1 个答案:

答案 0 :(得分:0)

您可以使用event.preventDefault()setTimeout()取消本机click事件并推迟应该发生的事件,直到更改事件有机会运行为止。

此外,请注意,这些天不应该使用内联HTML事件属性。相反,请遵循以下评论中所述的现代标准。

// Get references to your DOM elements
var input = document.querySelector("input");
var link = document.querySelector("a");

// Set up event handlers in JavaScript, not in HTML
input.addEventListener("change", function(){ alert("changed"); });
link.addEventListener("click", function(event){
  event.preventDefault();
  setTimeout(function(){
    alert("clicked");
  });
});
<input type="text">
<a href="#">click here</a>