0
$(".timeSeenInput").on("focusout keypress",function(event){
        alert($(this).attr("id"))
    })

ユーザーが入力ボックスから離れたとき、または押したときにそれを検出する必要があります。上記のコードは、キーを押したときに 2 回実行されます。両方ではなく、タブまたはフォーカスアウトのいずれかで起動するにはどうすればよいですか?

4

4 に答える 4

1

あなたはそれを少しデバウンスすることができます:

http://jsfiddle.net/wVbeB/

(function () {
    var timeout;
    $(".timeSeenInput").on("focusout keypress", function (event) {
        if (!timeout) {
            var self = this;
            timeout = setTimeout(function () {
                console.log(self.id);
                timeout = null;
            }, 0);
        }

    })
})();
于 2013-06-11T10:22:43.400 に答える
0

これは、tab keyが押されて発生した場合にのみfocusout発生します。

$(".timeSeenInput").on("focusout keydown", function (e) {
   var kc = e.which || e.keyCode;
   if (kc === 9) {
      alert('focusout with tab only');
   }
});
于 2013-06-11T10:20:38.763 に答える
0

タブアウトは、両方のイベントによって生成されます。タブアウト イベントにフラグを立てて、ぼかしを処理しないようにすることができます。

var handleBlur = true;
$(".timeSeenInput").on("focusout keypress",function(event) {
    if (event.type === 'keypress' && event.keyCode === TAB) {
        alert($(this).attr("id"));
        handleBlur = false;
        return;
    } else if (event.type === 'blur' && handleBlur) {
        // Handle blur
    }
    handleBlur = true;
});
于 2013-06-11T10:13:20.267 に答える
0

そのためのblurイベントです。

フィドル: http://jsfiddle.net/DPh6P/

$(".timeSeenInput").on("blur", function (event) {
    alert($(this).attr("id"))
})
于 2013-06-11T10:13:37.967 に答える