Bom dia pessoal, estou com um problema simples mas que esta me tirando o sono.
Uma aplicação legada que tenho que dar manutenção, onde, ao clicar duas vezes seguidas no botão de submit o registro é duplicado. Preciso fazer com que o clique no submit fique desabilitado até que a chamada ajax termine e retorne.
O AJAX_LOADER_BLOCKER esta habilitado, mas é possível dar 2 ou 3 cliques rápidos antes que apareça.
O botão.disabled=true; não funcionou, acredito que é pq se trata de um link.
O projeto é feito em Struts 1, com jquery e jdbc.
[code]function salvarAtendimento(){
if (controleSalvar) {
return;
}
if(validarAtendimento()){
validarPeriodoAgenda(function(){
$("#codEmpresa").removeAttr("disabled");
$("#codAgente").removeAttr("disabled");
$("#documentoCliente").removeAttr("disabled");
$("#nomeRep").removeAttr("disabled");
$("#representantes").removeAttr("disabled");
$("#nomeEmpreendimento").removeAttr("disabled");
$("#codTipoCliente").removeAttr("disabled");
var serializedForm = $("#atendimentoForm").serialize();
controleSalvar = true;
Ajax.JSONRequest('./SalvarAtendimento.do', serializedForm , function(data){
if(data.status){
$("#codAtendimento").val(data.codAtendimento);
if($("#numeroAtendimentoHidden").val() == '1' || $("#numeroAtendimentoHidden").val() == '4'){
responderDiagnostico($("#codDiagnostico").val(), $("#codClienteRep").val(), $("#codAtendimento").val());
}else{
if($("#numeroAtendimentoHidden").val() == '3' || $("#numeroAtendimentoHidden").val() == '6'){
registrarSolucoes($("#codDiagnostico").val(), $("#codAtendimento").val());
}else{
$("#voltarAtend").click();
}
}
}else{
jError(data.msg, data.exception, function(){
});
}
controleSalvar = false;
alert("false");
}, Ajax.constants.AJAX_LOADER_BLOCKER);
});
}
}[/code]
Note que implementei uma variável controleSalvar para tentar impedir o duplo submit, mas aparentemente o JS não espera a resposta do AJAX e segue a execução do script, por isso não funcionou.
Alguém poderia me dar uma luz? Obrigado