Функция для текстовой области пуста - PullRequest
0 голосов
/ 06 февраля 2012

Есть ли способ реализовать в чате "другой пользователь не печатает", когда его текстовое поле пусто, и "другой пользователь печатает", когда текстовое поле имеет хотя бы один символ?

Во-первых, я хотел реализовать эту функцию «печатать», проверяя каждые 2 секунды, нажимает ли пользователь клавиши, но я понял, что это слишком сильно замедляет чат. Это простой способ получить информацию, когда текстовое поле не пусто (пользователь печатает) и когда пусто - ничего не делать.

Спасибо.

1 Ответ

2 голосов
/ 06 февраля 2012

Отправьте сообщение «набирает» на первом keyup и используйте window.setTimeout, чтобы отправить сообщение «не печатать» через 10 секунд или около того.Отмените и перепланируйте 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...