Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rodrigofigueira

Propagação de evento

Recommended Posts

Bom dia pessoal,

 

Estou a dias pesquisando e nada, tenho um form e dentro desse form um button ( não um submit, tenho o submit correto o form ), e no seu onclick faço uma chamada assíncrona usando jQuery

button.on('click', function(){			
	$.ajax({
		url: 'minhaUrl',
		type: 'post',
		success: function(result){				
			console.log(result);
		}
	});
});

Qdo a chamada ajax acontece o submit do form está sendo disparado, isso ocorre somente se a função ajax for chamada, já testei o click do button sem ajax e não ocorre a propagação, já utilizei o event.stopPropagation(), event.preventDefault e event.stopImmediatePropagation em tudo qto é lugar e nada, alguém sabe como corrijo isso?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quem é "button" ? e como é o seu html ?

 

Tem outros javascripts?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho outros scripts mas nada relacionado a submit, e abaixo segue parte do html renderizado pelo cakePhp, será que algum script está influenciando? Nunca tive esse tipo de problema

<form action="minhaAction" id="meuId" method="post" accept-charset="utf-8">
<!-- trecho do form -->
	<label>Número do cupom de desconto</label>
	<input name="data[Festa][cupom]" display="Número do cupom" class="numeroCupom" type="text" id="FestaCupom">
	<button type="button" class="btn btn-large btnCupom">Validar Cupom</button>
	<button type="submit" class="btn btn-large">Enviar</button>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente não faz muito sentido. Tente da forma abaixo:

 

button.on('click', function(e){
	e.stopPropagation(); //vai evitar que o evento borbulhe até o form
	
	$.ajax({
		url: 'minhaUrl',
		type: 'post',
		success: function(result){				
			console.log(result);
		}
	});
        return false; //se por algum motivo o button estiver disparando o submit, isso irá impedir
});
Como vc declarou a variavel button ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara já testei exatamente dessa forma, inclusive o return false no final, e não rolou, mas vou tentar novamente, o button eu capturei usando jQuery

var button = $('.btnCupom');

Até pensei que talvez eu tenha vacilado inserindo a classe em algum outro lugar, realizei o teste usando um id para selecionar o elemento, conferi se o retorno do seletor estava capturando mais de um elemento e realmente somente um elemento está sendo capturado, enfim vou realizar os testes novamente, vai que me faltou fé kkk


Wiliam, retestei e deu a mesma coisa, vou revisar os scripts, estou estudando Desing Patterns e esse foi o primeiro projeto que comecei a implementar alguns patterns, devo ter errado em algum ponto, por hora vou deixar o tópico aberto, na próxima semana eu fecho vai que algum "ser iluminado" me dê uma luz, mas obrigado pela força.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.