2011-02-07 27 views
34
var form = document.forms[0]; 
form.addEventListener("submit", function(){ 
    var email = form.elements['answer_13829'].value; 
    if(email == '[email protected]') { 
    alert('redirecting the user...'); 
    window.location = 'xxxx'; 
    return false; 
    } 
}); 

No entiendo, todavía envía el formulario. ¿Alguien puede parchear mi código y hacerlo funcionar?return false on addEventListener submit aún envía el formulario?

+0

Otra rareza: puedo añadir atributo onsubmit para formar y form form.addEventListener, y parece que ambos se ejecutan. ¿Es eso un error del navegador? – allyourcode

+0

Otra rareza: onsubmit = "return false;" detiene el envío de la forma. – allyourcode

Respuesta

51

Debe utilizar el método preventDefault() del objeto de evento.

Nota que ni addEventListener() ni preventDefault() están soportados en IE < = 8.

var form = document.forms[0]; 
form.addEventListener("submit", function(evt){ 
    var email = form.elements['answer_13829'].value; 
    if(email == '[email protected]') { 
    evt.preventDefault(); 
    alert('redirecting the user...'); 
    window.location = 'xxxx'; 
    } 
}); 
+0

gracias por su ayuda que funciona. – David

+1

y pregunto por qué, por ejemplo, apesta? – yossi

+1

@yossi: IE tiene su propia API equivalente. –

-1

la return false; Es un trabajo sobre la función bind jQuery única

Cuestiones relacionadas