Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.01.2012, 12:50
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

Отмена отправки формы. Фигня какаято :(
Привет. Есть следующее:
<form onSubmit="return func('1');">
...
</form>


function func(x) {
  switch(x) {

    .....

    case "1":
      ...
      if(...) { return false; }
      break;

    .....

  }
}


Непойму, почему при срабатывании "if(...)" форма все равно отправляется ?
Ответить с цитированием
  #2 (permalink)  
Старый 24.01.2012, 13:16
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

используйте другие способы отмены действия по-умолчанию, ваш способ устарел.
Ответить с цитированием
  #3 (permalink)  
Старый 24.01.2012, 13:20
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

Какие методы используете Вы ?
Ответить с цитированием
  #4 (permalink)  
Старый 24.01.2012, 16:28
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

form.attachEvent \ form.addEventListener.

но можно и ограничиться form.onclick
Ответить с цитированием
  #5 (permalink)  
Старый 24.01.2012, 18:05
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

Отлично, обязательно почитаю о новых прогрессивных методах, но все-таки жду помощи по моему примеру, на самом деле, что не так то с ним ?
Ответить с цитированием
  #6 (permalink)  
Старый 24.01.2012, 18:23
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от melky
ваш способ устарел.
Эм? Я понимаю, что человек не прав с пиханием кода в атрибут, но чем такой подход устарел в общем?
form.addEventListener('submit', function(){return false;});
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #7 (permalink)  
Старый 24.01.2012, 22:00
Аватар для NoResponse
Профессор
Отправить личное сообщение для NoResponse Посмотреть профиль Найти все сообщения от NoResponse
 
Регистрация: 17.06.2010
Сообщений: 152

кажись поэтому
<form onsubmit="return func('1');">
Ответить с цитированием
  #8 (permalink)  
Старый 24.01.2012, 22:43
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от NoResponse
кажись поэтому
HTML не регистрозависимый.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #9 (permalink)  
Старый 25.01.2012, 00:35
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

http://jsfiddle.net/WUa4Y/

сами протестите. работает. выкладывайте полный код на jsfiddle.
Ответить с цитированием
  #10 (permalink)  
Старый 25.01.2012, 08:47
Кандидат Javascript-наук
Отправить личное сообщение для lolka84 Посмотреть профиль Найти все сообщения от lolka84
 
Регистрация: 23.08.2010
Сообщений: 123

Блин, неоднократно взорвал себе мозг, нечего не понимаю, офигеть я чайник

В функции запускается 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 неопределена

Как заставить работать эту конструкцию ?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать задержку отправки формы на javascript? Akimserg Общие вопросы Javascript 12 19.10.2015 13:15
Как сделать disabled кнопки во время отправки формы? Bad Request Events/DOM/Window 7 16.04.2014 13:49
Валидация поля для отправки формы shkarbatov Javascript под браузер 3 25.07.2011 14:07