[RESOLVIDO]Duvida sobre AJAX no JQuery

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

Olá ezaack, você pode tentar criar uma variavel global (fora do escopo da function) e incrementar a cada chamada do evento, caso seja 1 faça o procedimento, caso contrário nem precisa colocar nada se não quiser que aconteça nada!!

Ex:

var click=0;
$(".link").click(function(event){
    click++;
    if(click==1){
        //Coloque tudo que vai fazer
        click=0;
    }

});


Caso clique mais de uma vez ele não ira efetuar o que estiver dentro do if até terminar

[quote=Mickdark]Olá ezaack, você pode tentar criar uma variavel global (fora do escopo da function) e incrementar a cada chamada do evento, caso seja 1 faça o procedimento, caso contrário nem precisa colocar nada se não quiser que aconteça nada!!

Ex:

var click=0;
$(".link").click(function(event){
    click++;
    if(click==1){
        //Coloque tudo que vai fazer
        click=0;
    }

});


Caso clique mais de uma vez ele não ira efetuar o que estiver dentro do if até terminar[/quote]

Opa, vou testar e posto o resultado. Obrigado

o jquery tem 2 funções chamadas, ajax start e ajax stop para quando uma função ajax inicia e quando termina

Funcionou, muito obrigado

Funcionou o ajax.stop ou o método que eu passei?