Я рекомендую следующую (основанную на времени) стратегию:
- Срабатывание ключей
- Отмена тайм-аута (если он запущен одновременно)
- Началоновый тайм-аут (500 - 1000 мс)
- Выполните запрос по истечении времени ожидания
Таким образом, вы можете делать запрос каждый раз, когда пользователь прекращает вводить текст, по крайней мере, 500 - 1000 мс.Это экономит некоторые запросы, пока пользователь все еще печатает.Вы можете запустить запрос сразу же после запуска события blur, поскольку пользователь, очевидно, больше не печатает.
Пример (с использованием jQuery) с 500 мс:
var timeout = null;
var stopTimeout = function () {
// step 2: stop running timeout
if (timeout !== null) {
clearTimeout(timeout);
timeout = null;
}
};
var doRequest = function () {
// step 4: do request
};
// step 1: event fires
$('input').keyup(function () {
stopTimeout();
// step 3: start new timeout
timeout = setTimeout(doRequest, 500);
}).blur(function () {
stopTimeout();
doRequest();
});
Asдругие заявили, что проверка на недопустимые символы и т. д. должна выполняться как на стороне клиента, так и на стороне сервера, поскольку вы не можете доверять клиенту.