2011-02-07 14 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; 
    } 
}); 

Nie rozumiem - nadal przesyła formularz. Czy ktoś może załatać mój kod i sprawić, by działał?return false w addEventListener submit nadal przesyła formularz?

+0

Innym kuriozum: Mogę dodać onsubmit atrybut do tworzenia i do form.addEventListener i oba wydają się działać. Czy to błąd przeglądarki? – allyourcode

+0

Kolejna osobliwość: onsubmit = "return false;" przestaje przesyłać formularz. – allyourcode

Odpowiedz

51

Należy użyć metody preventDefault() obiektu zdarzenia.

Zauważ, że ani addEventListener() ani preventDefault() są obsługiwane w 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

dzięki za pomoc, która działa. – David

+1

i pytam, dlaczego tj. Do bani? – yossi

+1

@yossi: IE ma swój własny równoważny interfejs API. –

-1

return false; to praca nad funkcją wiążą jQuery tylko

Powiązane problemy