打字

2011-08-30 47 views
1

時,這是我的代碼,不要刷新。牆壁會自動刷新AJAX(每9秒),但是當您鍵入內容並且文本框重點時,會在頁面刷新後刪除焦點和文本框的內容。打字

我怎樣才能讓它只刷新,當你不打字,並讓你停止時,你打字。謝謝!我到處尋找並嘗試了一切,但沒有運氣。

+0

與您的問題不相關,但不應該不必要的緩存是不必要的,因爲你有一個隨機查詢參數? –

+0

只是爲了確保,但我沒有測試沒有緩存關閉。 –

回答

2

我想你有一個這樣的輸入框:

<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 }); 
+0

這可能會工作,但我怎樣才能檢查所有的輸入框?或者至少有相同類的輸入框?我有多個文本框。 –

+0

將$(「#input-box」)更改爲.. $(「。class-name」)或者一個類別列表$(「#input-box1,#input-box2,#input-box3」) – Ivan

+0

Boss 。謝謝! –

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); 
}); 
+0

爲什麼是逗號? –

+1

這就是你如何用相同的'var'關鍵字聲明多個變量:http://docstore.mik.ua/orelly/webprog/jscript/ch04_02.htm –