2017-09-01 7 views
1

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); 

私はフォーカスイベントをトリガしますが、blurイベントがフォーカス後に解雇。 私は長い間、コンソールを閉じて、setTimeoutを使用して検索しましたが、解決できません。どうしたのでしょうか?

+0

フォーカスイベントリスナーはありませんか? –

答えて

1

これは実際にはではなく、です。 focus()は自動的にトリガーしません。blur()

DOMと対話しているため、blur()がトリガーされています。あなたのフィドル(RunまたはTidyなど)のボタンの1つをクリックすると、#focus-ipt要素はアクティブではなくなりました。あなたがクリックしているボタンはアクティブです。

何もせずにタイムアウトするのであれば、blur()イベントは発生しません。入力をクリックするとすぐに、blur()になります。

これは、次の例で見ることができます。

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

は、この情報がお役に立てば幸い! :)

+0

私は、何もせずにリンクを開き、ぼかしを開始しました。そして、コードをHTMLファイルに書き込んで、クロムで実行しますが、クリックは一切ありませんが、ボケイベントはまだ解消されています。コードをコピーして実行してください。申し訳ありませんが、これは何日も私を本当に混乱させます。 –

+0

ボタンの色が深くから浅いに変わったときに、コードを実行し、「コードスニペットを実行」ボタンをクリックするだけで、値が「ぼかし」に変わります。 –

+0

JSFiddleリンクを開いたときに 'blur()'は自動的に起動しません。あなたは実際に 'blur()'を発生させる何かをしています。私の例は自動的に私のためにぼやけませんし、あなたのJSFiddleもありません。 –

関連する問題