return false on addEventListener submit still submits the form?

David picture David · Feb 7, 2011 · Viewed 35.7k times · Source
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;
  }
});

I don't understand - it still submits the form. Can someone patch my code and make it work?

Answer

Tim Down picture Tim Down · Feb 7, 2011

You need to use the preventDefault() method of the event object.

Note that neither addEventListener() nor preventDefault() are supported in 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';
  }
});