2012-02-06 33 views
0

當textarea至少有一個字符時,如果textarea爲空,並且「其他用戶正在鍵入」,是否有一種方式可以在聊天中「其他用戶不打字」?textarea函數爲空

首先,我想通過檢查每2秒檢查一次該用戶是否按下按鍵,但我意識到這會太慢地減慢聊天。當textarea不是空的時候(用戶正在輸入)以及什麼時候空 - 什麼也不做。

謝謝。

+2

使用'keydown'處理程序。如果用戶使用字符填充文本框,則發送「正在輸入」消息,如果用戶清空文本框,則發送空消息(以清除消息輸出)。 – 2012-02-06 02:48:20

+0

謝謝,我會嘗試看看我是否也可以爲此創建代碼。 – Ingrid 2012-02-06 03:32:49

回答

2

發送第一個keyup的「is typing」消息,並使用window.setTimeout在10秒左右後發送「not typing」消息。在每個鍵盤上取消並重新安排setTimeout。

未經測試下面的例子:

var input = document.getElementById('typeeBox'); 
var isTyping = false; 
var timeoutId = 0; 

function stoppedTyping() { 
    isTyping = false; 
    // Send not typing message. 
    // Update db status. 
} 

function startedTyping() { 
    if (!isTyping) { 
     // Send is typing message. 
     // Update db status. 
     isTyping = true; 
     timeoutId = window.setTimeout(stoppedTyping, 10000); 
    } else { 
     window.clearTimeout(timeoutId); 
     timeoutId = window.setTimeout(stoppedTyping, 10000); 
    } 
} 

input.addEventListener('keyup', startedTyping, false); 
+0

謝謝,我現在要測試此代碼。只是一個簡單的問題,超時會影響我已經在聊天中使用的計時器嗎?爲了以防萬一,我會暫時嘗試沒有它的代碼。 – Ingrid 2012-02-06 03:10:50

+0

除了你已經運行的東西之外,'setTimeout'應該簡單地調度另一個函數來運行。同樣,'clearTimeout'只會清除傳遞給它的'timeoutId'運行的函數。 – pete 2012-02-06 03:16:32

+0

好的,謝謝,我會盡快回復! – Ingrid 2012-02-06 03:22:00