jQuery: Envie um formulário somente se nenhum AJAX estiver sendo executado na página
Quando o campo de entrada da cidade está embaçado, eu obtenho algo através de uma solicitação ajax e defino isso como o valor de um campo oculto na mesma forma em que o campo da cidade reside.
$('input#city').on('blur', function() {
$.ajax({
url: 'get/something?param=val',
success: function(response) {
$('input:hidden[name="something"]').val(response);
}
});
});
Se o usuário enviar o formulário imediatamente após o apagamento do campo da cidade, às vezes, devido à latência, o campo oculto não será preenchido, pois o SQL na outra extremidade está demorando muito.
A forma em que esses dois campos estão também é enviada via ajax:
$('form#find-users').on('submit', function() {
if(NO_AJAX_CURRENTLY_RUNNING_ON_PAGE) {
// do stuff
}
});
Como detectar se nenhum ajax está sendo executado na página? Isso garantirá que o ajax da cidade seja concluído e o campo oculto seja preenchido antes que o formulário seja processado.
EDITARNa verdade, isso não impedirá que o formulário seja enviado. Mas se eu puder detectar isso, então eu posso usar um setInterval e continuar tentando executar esse código até que ele seja executado porque o ajax está completo. O ideal é que haja algo no jQuery que aguarde até que outro ajax seja concluído e, em seguida, seja enviado.