#javascript #jquery #ajax
Вопрос:
Я использую плагин проверки jquery для проверки сложной формы. В некоторых конкретных полях ввода я использую дополнительные вызовы ajax для предоставления дополнительной обратной связи с пользователями. Например, при вставке PEM-сформированного сертификата в элемент textarea синтаксический анализ на стороне сервера позволяет предоставить пользователю немедленный доступ к теме сертификата, эмитенту и дате истечения срока действия, отображаемым в элементах ввода только для чтения.
Изначально я привязывал вызов ajax к событию изменения таким образом:
$('textarea.x509').on('change', function () {
// parse certificate server-side with ajax query
});
Это было прекрасно, так как позволяло избежать бесполезных ajax-запросов, когда значение не менялось. Однако это также вызвало бесполезные запросы на недопустимые значения. Поскольку я также использовал проверку ckient на основе шаблонов, я попытался сократить эти бесполезные запросы.
Я использовал крючки плагинов проверки ajax для привязки вызова ajax к событию elementValidationSuccess:
$('textarea.x509').on('elementValidationSuccess', function () {
// parse certificate server-side with ajax query
});
Теперь это срабатывает только для допустимых значений. Однако он также срабатывает каждый раз, когда фокус теряется из элемента textarea, поскольку плагин проверки jquery запускает проверку (для такого поля) для событий размытия и ввода, даже если фактическое значение не изменилось.
Есть ли способ совместить преимущества обеих стратегий и запускать эти ajax-запросы только для проверенных изменений ? Я подумывал об использовании дополнительного обработчика событий для событий изменений, обработке простого флага is_dirty для поля или сохранении отслеживания предыдущего значения в моем текущем обработчике, но оба решения кажутся слишком громоздкими для того, что кажется относительно простой необходимостью.
С уважением.