Отмена отправки формы. Фигня какаято :( 
		
		
		
		Привет. Есть следующее: 
	
<form onSubmit="return func('1');">
...
</form>
function func(x) {
  switch(x) {
    .....
    case "1":
      ...
      if(...) { return false; }
      break;
    .....
  }
}
Непойму, почему при срабатывании "if(...)" форма все равно отправляется ?:(  | 
	
		
 используйте другие способы отмены действия по-умолчанию, ваш способ устарел. 
	 | 
	
		
 Какие методы используете Вы ?:) 
	 | 
	
		
 form.attachEvent \ form.addEventListener. 
	но можно и ограничиться form.onclick  | 
	
		
 Отлично, обязательно почитаю о новых прогрессивных методах, но все-таки жду помощи по моему примеру, на самом деле, что не так то с ним ? 
	 | 
	
		
 Цитата: 
	
 
form.addEventListener('submit', function(){return false;});
 | 
	
		
 кажись поэтому 
	<form onsubmit="return func('1');">  | 
	
		
 Цитата: 
	
  | 
	
		
  | 
	
		
 Блин, неоднократно взорвал себе мозг, нечего не понимаю, офигеть я чайник :( 
	В функции запускается ajax запрос, условие if() - это выдергивание нужного ответа сервера, т.е. 
function func(x) {
  switch(x) {
    .....
    case "1":
      ...
      XMLHttp.onreadystatechange = function() {
        if (XMLHttp.readyState == 4) {
          if (XMLHttp.status == 200) {
            if (XMLHttp.responseText == "FAIL") { 
              alert("Ошибка"); return false;  
            }
          }
        }
      }
      break;
    .....
  }
}
Alert вылазит, но форма все равно отправляется, как будто return false; вовсе нет. Попробывал так: 
function func(x) {
  switch(x) {
    .....
    case "1":
      ...
      XMLHttp.onreadystatechange = function() {
        if (XMLHttp.readyState == 4) {
          if (XMLHttp.status == 200) {
            if (XMLHttp.responseText == "FAIL") { 
              alert("Ошибка"); x = false;  
            }
            else { x = true; }
          }
        }
      }
      break;
    .....
  }
  return x;
}
Но за пределами XMLHttp.onreadystatechange = function() переменная x неопределена :( Как заставить работать эту конструкцию ? :(  | 
	
		
 Цитата: 
	
 Цитата: 
	
 Она же асинхронная!  | 
	
		
 Цитата: 
	
 Как заставить конструкцию то работать все-таки ?  | 
	
		
 
XMLHttp.onreadystatechange = function() {
        if (XMLHttp.readyState == 4) {
          if (XMLHttp.status == 200) {
            if (XMLHttp.responseText == "FAIL") { 
              alert("Ошибка");
            }
          }
        }
      }
      return false;
 | 
	
		
 onsubmit="return false" :dance: 
	 | 
	
		
 Цитата: 
	
 e.preventDefault(); и e.stopPropagation(). которые применяются, разумеется, раздельно, но имеют общий смысл. Вам надо на форму повесить прерывание на submit и задать вектор на e.preventDefault(); с проверкой условия, которое и снимет ваш асинхронный ахакс. Например вот так 
addEvent(form, "submit", function(e) {
		if(cancel_default_submit && e.preventDefault)
                     e.preventDefault();
		return cancel_default_submit;
	});
 | 
	
		
 lolka84, 
	вам при любых значениях нужно возвращать return false иначе форма будет отправлятся 
onsubmit="func('a'); return false;"
 | 
| Часовой пояс GMT +3, время: 07:56. |