Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Отмена отправки формы. Фигня какаято :( (https://javascript.ru/forum/dom-window/25066-otmena-otpravki-formy-fignya-kakayato.html)

melky 25.01.2012 12:49

Цитата:

Сообщение от lolka84 (Сообщение 152708)
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;

    .....

  }

}

функция, в которой return false, исполняется после совершения запроса. вам нужно, чтобы она возвращала false до запроса. вы плохо знаете ajax. я бы кинул пару ссылок на мануалы, но не помню ни одного :(

Цитата:

Сообщение от lolka84 (Сообщение 152708)
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;
}

Она же асинхронная!

lolka84 25.01.2012 13:48

Цитата:

Сообщение от melky (Сообщение 152751)
вы плохо знаете ajax.

Обратного и не утверждаю :) Ламер пока, да.
Как заставить конструкцию то работать все-таки ?

melky 25.01.2012 15:15

XMLHttp.onreadystatechange = function() {
        if (XMLHttp.readyState == 4) {
          if (XMLHttp.status == 200) {
            if (XMLHttp.responseText == "FAIL") { 
              alert("Ошибка");
            }
          }
        }
      }
      return false;

mnestrahno 03.01.2014 10:40

onsubmit="return false" :dance:

kostyanet 09.01.2014 02:33

Цитата:

Сообщение от lolka84
Привет. Есть следующее:
<form onSubmit="return func('1');">

По-моему возврат фолсов давным давно не работает. Ну может в старых браузерах еще. В которых наверно не работают методы

e.preventDefault();

и

e.stopPropagation().

которые применяются, разумеется, раздельно, но имеют общий смысл.

Вам надо на форму повесить прерывание на submit и задать вектор на e.preventDefault(); с проверкой условия, которое и снимет ваш асинхронный ахакс.

Например вот так

addEvent(form, "submit", function(e) {
		if(cancel_default_submit && e.preventDefault)
                     e.preventDefault();
		return cancel_default_submit;
	});

Vlasenko Fedor 09.01.2014 02:57

lolka84,
вам при любых значениях нужно возвращать return false иначе форма будет отправлятся
onsubmit="func('a'); return false;"


Часовой пояс GMT +3, время: 15:53.