jQuery: отправляйте форму, только если на странице не запущен AJAX
Когда поле ввода города размыто, я получаю сонет через ajax-запрос и устанавливаю его как значение скрытого поля в той же форме, в которой находится поле города.
$('input#city').on('blur', function() {
$.ajax({
url: 'get/something?param=val',
success: function(response) {
$('input:hidden[name="something"]').val(response);
}
});
});
Если пользователь отправляет форму сразу после размывания поля города, иногда из-за задержки скрытое поле не заполняется, потому что SQL на другом конце занимает слишком много времени.
Форма, в которой находятся оба этих поля, также передается через ajax:
$('form#find-users').on('submit', function() {
if(NO_AJAX_CURRENTLY_RUNNING_ON_PAGE) {
// do stuff
}
});
Как определить, что на странице не запущен ajax? Это обеспечит заполнение ajax города и заполнение скрытого поля перед обработкой формы.
РЕДАКТИРОВАТЬНа самом деле это победилот, это только предотвратит отправку формы. Но если я могу обнаружить это, то могу использовать setInterval и продолжать пытаться запустить этот код, пока он не запустится, потому что ajax завершен. В идеале в jQuery должно быть что-то, ожидающее завершения другого ajax, а затем отправляющее.