Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.02.2014, 00:51
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

Отменить действие по умолчанию
Привет всем.

Есть функция которая срабатывает при клике на кнопку отправки формы. При нажатии на кнопку происходит ряд проверок заполнения полей (т.н. валидация).

После всех проверок дополнительно AJAX-ом (при помощи jQuery) идет запрос к скрипту PHP, который либо присылает ответ в виде элемента, например "p" с классом "error" и текстом внутри, если ошибка, либо вообще ничего не пишет. Данные ловлю как html.

В success функции $.ajax ловлю ответ и вставляю в элемент, например div с классом "MyDiv". И делаю проверку:

if($("#MyDiv").has(".error").length > 0){ // Если в ответе пришел p  с классом error
// Вот тут что написать чтобы отменить click по батону формы?
};


Код примера:
$("#newSubmit").click(function(){// Обработка формы
//идут проверки
//если прошли, то ...
		
		$.ajax({
			type: "POST",
			url: '....php',
			data: {...: ...},
			cache: false,
			dataType: "html",
			success: function(data){
			$("#MyDiv").html(data);				
                                  if($("#MyDiv").has(".error").length > 0){ // Если в ответе пришел p  с классом error
                                  // Вот тут что написать чтобы отменить click по батону формы?
};
			}
		});			
	});


Заранее благодарю за советы.
Ответить с цитированием
  #2 (permalink)  
Старый 14.02.2014, 01:38
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Lion_astana, типичная ошибка.
Клик нужно отменять пока выполняется функция-обработчик click'а. А когда пришел ответ от сервера - то уже поздно что-то отменять, ибо обработчик то давно уже отработал, и браузер начал выполнять свое действие по умолчанию.
Поэтому логика такая: сразу отменяем действие по умолчанию (возвратив false или вызвав event.preventDefault() - event приходит аргументом ), а по окончанию запроса уже если нужно сабмитим form.submit()
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 14.02.2014, 10:27
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

danik.js,
спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Один обработчик для всех ninzzo Events/DOM/Window 4 02.02.2014 00:27
Вернуть назад действие по умолчанию (противоположность preventDefault()) dr_gluk jQuery 0 22.02.2012 13:19
Отменить псевдокласс :hover hrundel Events/DOM/Window 7 04.12.2010 06:20
отменить действие submit Hugo_O Events/DOM/Window 6 31.05.2010 20:10
Отменить поведение по умолчанию bool Общие вопросы Javascript 3 06.03.2009 16:59