イベント ハンドラ
でfocusout
との
2 つのイベントを処理しています。イベント ハンドラ内の最後の行としての
呼び出しが部分的に機能しているようです-- 正しく機能していますが、 2 回起動しています。
keydown
$(elementID).on()
$(elementID).off("focusout keydown");
.on()
focusout
keydown
編集: With
@Barmar
の調査結果keydown
は、最初にトリガーfocusout
され、次に keydown
. これは Firefox 22 で発生していますが、Chrome 29 では発生していないようです。
HTMLは次のとおりです。
<input type = "text" id = "textField" />
<input type = "button" onclick = "setFocus();" value = "click here" />
<ol>
<li>Type some text into the textfield.</li>
<li>Click the button.</li>
<li>
Click out of the textfield, or
<br />
<i>press enter for some weird behavior.</i>
</li>
</ol>
...ここにjavascript / jQueryがあります:
function setFocus() {
$("#textField").focus();
$("#textField").select();
var count = 1;
$("#textField").on("focusout keydown", function(e) {
// if clicked away, or the enter key is pressed:
if (e.type == "focusout" || e.keyCode == 13) {
alert(e.type + ": " + count++);
}
// this doesn't seem to be working correctly:
$("#textField").off("focusout keydown");
});
}
...そしてここにjsFiddleがあります。