<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,然而,无法解决它;我真的不知道这是怎么发生的,有人能帮帮我吗?
答案 0 :(得分:1)
这实际上是不的情况; focus()
不会自动触发 blur()
。
blur()
因为您正在与DOM进行交互而被触发。通过点击小提琴中的其中一个按钮(例如Run
或Tidy
),#focus-ipt
元素不再有效 - 您点击的按钮就是。
如果你只是等待时间而没有做任何事情,那么blur()
事件就不会发生。只要您点击输入,blur()
就会。
这可以在以下示例中看到:
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;
希望这有帮助! :)