onBlur杀死onClick但不使用setTimeout

时间:2011-06-17 21:22:04

标签: javascript onclick settimeout onblur

如果您将光标放在第一个输入中,然后单击该按钮,您将收到一条消息。

如果您将光标放在第二个(使用setTimeout),则会收到两条消息。

为什么第一个场景中没有显示“点击按钮”消息?

相反,setTimeout是什么让第二个显示两个警报?

<html>
<head>
  <script type='text/javascript'>
    function testOne() {
      alert('button was clicked');
    }
    function testTwo() {
      alert ('focus left the input');
    }
  </script>
</head>
<body>
  <input name="input1" onblur="testTwo()" />
  <input name="input2" onblur="setTimeout(function(){testTwo();}, 100)" />
  <button name="button1" onclick="testOne()">Button</button>
</body>
</html>

1 个答案:

答案 0 :(得分:4)

你认为发生的事情并没有真正发生。

尝试使用console.log(不阻止)而不是alert(确实阻止),你会看到两个事件处理程序都运行。万岁,另一个鄙视alert调试的理由。

http://jsfiddle.net/mattball/j4cuG/