1

これは私のコードです:

// Refresh feeds, but ONLY when you are NOT typing
var refreshId = setInterval(function() {
    $("#load-feeds").load('/actions/loadfeed.php?randval='+ Math.random());
}, 9000);
$.ajaxSetup({ cache: false });

私は、お互いの投稿にコメントできる Facebook のような一種の「壁」に取り組んでいます。壁は AJAX (9 秒ごと) で自動的に更新されますが、入力中にテキスト フィールドがフォーカスされると、ページが更新された後にフォーカスとテキスト ボックスのコンテンツが削除されます。

入力していないときにのみ更新し、入力しているときに停止するにはどうすればよいですか。ありがとう!私はいたるところを見て、すべてを試しましたが、運がありません。

4

2 に答える 2

2

次のような入力ボックスがあるとします。

<input type="text" id="input-box" ... />

この入力にフォーカスがあるかどうかを示すよりも、グローバル変数を維持するだけです。

var isTyping = false;
$("#input-box").focus(function() {
    isTyping = true;
});
$("#input-box").blur(function() {
    isTyping = false;
});

次に、更新を許可する前にこの変数をチェックする必要があります。

// Refresh feeds, but ONLY when you are NOT typing
var refreshId = setInterval(function() {
    if (!isTyping) {
        $("#load-feeds").load('/actions/loadfeed.php?randval='+ Math.random());
}, 9000);
    }
$.ajaxSetup({ cache: false });
于 2011-08-30T22:29:56.760 に答える
0

timeout入力時にタイマーを実行し続け、ロードする前に確認する必要があります。

var typing = false,
    theTimer,
    refreshId = setInterval(function() {
        typing || $("#load-feeds").load('/actions/loadfeed.php?randval='+ Math.random());
    }, 9000);
$.ajaxSetup({ cache: false });

$('#theInput').keyup(function() {
    typing = true;
    theTimer && clearTimeout(theTimer);

    theTimer = setTimeout(function() {
        typing = true;
    }, 500);
});
于 2011-08-30T22:28:49.117 に答える