Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Pessoal,
Estava brincando com JavaScript aqui e rolou uma pequena dúvida e curiosidade ao mesmo tempo. Vou explicar.
Imagine a seguinte função:
...$('botaoSubmit').onclick = function() { alert('click valida'); return false;}...
Ou seja, informei que ao clicar no botão de submit (para enviar o formulário) será exibido uma mensagem - click valida - e terá um return false. Com isso o form não será enviado. Ok, perfeito.
Agora, imagine esta outra situação:
...addEvent($('botaoSubmit'),'click',valida);...
...function valida() { alert('click valida'); return false;}...
Ou seja, fiz a mesma coisa, informei que ao clicar no botão - botão de submit - será chamada a função - valida - e essa por usa vez exibirá uma mensagem - click valida - e terá um return false.
Bom, aí que está, a mensagem do alerta é exibida normalmente, mas o return false não rola.
Alguém sabe o porque disso?
>
eh o contexto de uso, para parar eventos usando o handler de eventos do browser, voce tera que usar outros artificios (que na verdade sao os mais corretos):
if(!window.Event) Event = new Object();Event.stop = function(event) { if (event.preventDefault) { event.preventDefault(); event.stopPropagation(); } else { event.returnValue = false; event.cancelBubble = true; }};pronto, com essa funcao voce poderia fazer assim para parar seus eventos:function valida(evt) { var e = evt || event; //pegando evento de modo cross-browser Event.stop(e); //parando evento}
Grande Wilker, tudo bem cara? Valeu pelo help ai.Bom, seguinte: tive alguns probleminhas com o código passado. Se utilizo assim:
var e = evt || event; //pegando evento de modo cross-browser
não funciona no IE e nem no FF.Agora, se utilizo assim:
var e = event || evt; //pegando evento de modo cross-browser
Funciona no IE e não no FF.Alguma idéia? Obrigado por enquanto.
se lembre que evt tem que estar na lista dos parametros da funcao que esta sendo executada (como mostrado no exemplo)
eh o contexto de uso, para parar eventos usando o handler de eventos do browser, voce tera que usar outros artificios (que na verdade sao os mais corretos):
pronto, com essa funcao voce poderia fazer assim para parar seus eventos:
function valida(evt) { var e = evt || event; //pegando evento de modo cross-browser Event.stop(e); //parando evento}