時,這是我的代碼,不要刷新。牆壁會自動刷新AJAX(每9秒),但是當您鍵入內容並且文本框重點時,會在頁面刷新後刪除焦點和文本框的內容。打字
我怎樣才能讓它只刷新,當你不打字,並讓你停止時,你打字。謝謝!我到處尋找並嘗試了一切,但沒有運氣。
時,這是我的代碼,不要刷新。牆壁會自動刷新AJAX(每9秒),但是當您鍵入內容並且文本框重點時,會在頁面刷新後刪除焦點和文本框的內容。打字
我怎樣才能讓它只刷新,當你不打字,並讓你停止時,你打字。謝謝!我到處尋找並嘗試了一切,但沒有運氣。
我想你有一個這樣的輸入框:
<input type="text" id="input-box" ... />
所有你需要做的是mantain一個全球變量比說,如果這個輸入有焦點:
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 });
這可能會工作,但我怎樣才能檢查所有的輸入框?或者至少有相同類的輸入框?我有多個文本框。 –
將$(「#input-box」)更改爲.. $(「。class-name」)或者一個類別列表$(「#input-box1,#input-box2,#input-box3」) – Ivan
Boss 。謝謝! –
你應該保持一個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);
});
爲什麼是逗號? –
這就是你如何用相同的'var'關鍵字聲明多個變量:http://docstore.mik.ua/orelly/webprog/jscript/ch04_02.htm –
與您的問題不相關,但不應該不必要的緩存是不必要的,因爲你有一個隨機查詢參數? –
只是爲了確保,但我沒有測試沒有緩存關閉。 –