触发焦点事件将触发模糊事件(不使用警报和浏览器控制台)

时间:2017-09-01 03:47:02

标签: javascript onfocus

jsfiddle link

<input id = "focus-ipt" type = "text" value = "nothing" />

var $focusIpt = document.querySelector( "#focus-ipt" );
$focusIpt.addEventListener( "blur", function ( e ) {
   $focusIpt.value = "blured!";
} );
setTimeout( function () {
    $focusIpt.focus();
    }, 1000 );

我只是触发焦点事件,但在焦点后触发模糊事件; 我搜索了很长时间,关闭控制台,使用setTimeout,然而,无法解决它;我真的不知道这是怎么发生的,有人能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

这实际上是的情况; focus() 不会自动触发 blur()

blur()因为您正在与DOM进行交互而被触发。通过点击小提琴中的其中一个按钮(例如RunTidy),#focus-ipt元素不再有效 - 您点击的按钮就是。

如果你只是等待时间而没有做任何事情,那么blur()事件就不会发生。只要您点击输入,blur() 就会

这可以在以下示例中看到:

&#13;
&#13;
var $focusIpt = document.querySelector("#focus-ipt");
$focusIpt.addEventListener("blur", function(e) {
  $focusIpt.value = "Blurred!";
});
setTimeout(function() {
  $focusIpt.focus();
}, 1000);
&#13;
<input id="focus-ipt" type="text" id="myText" value="Sample Text">
<button type="button">Click me to lose focus</button>
&#13;
&#13;
&#13;

希望这有帮助! :)