Задать вопрос

Как часто нужно проверять форму?

Есть одно поле куда пользователь должен вводить title и другое поле где автоматически title переводиться в url-формат с помощью slugify. Пока что с каждым новым символом в поел title отправляется запрос на сервер там работает slugify и так же проверяется нет ли такого url в базе данных, и возвращается ответ с url и true/false в зависимости от наличия в базе данных.
Так же пользователь может сам изменить после с url и опять должны будут быть проверки.
Хочу уменьшить нагрузку на сервер и сделать какой-то таймаут, как часто на практике должна проиходить проверка в такой ситуации, либо может нужен другой принцып?
  • Вопрос задан
  • 161 просмотр
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@kirill-93
Все эти методы не подходят, если при нажатии на кнопку "сохранить", вы редиректите на другую страницу. Самый правильный вариант - отправлять запрос не сразу после нажатия клавиши, а спустя какое-то время. Некий таймер, который обнуляется, если пользователь продолжает вводить текст. Обычно такой метод называется "debounce", и уже реализован в разных библиотеках, например в underscrore
Если подключать библиотеку не хочется, то можно написать самому, примерно так:

function debounce(method, timeout) {
        clearTimeout(method._tId);
        method._tId = setTimeout(function(){
            method();
        }, timeout);
    }       }, timeout);
}


Описываем нужный метод:
function checkTitle() {
 //Код проверки
}


И вешаем его на событие:

$('input').on('keyup', function() {
   debounce(checkTitle, 1000);
});


В итоге, если после ввода последнего символа прошла секунда и пользователь больше ничего не ввел, вызовется метод checkTitle()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
creativeworm
@creativeworm
Переводите в транслит при отправке запроса на сервер (по нажатию на кнопку "сохранить"), тогда же проверяйте занятость и при совпадении добавляйте "-2", "-3" и .д. при наличии такого url или время.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы