Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.03.2015, 14:17
Аспирант
Отправить личное сообщение для 2chan Посмотреть профиль Найти все сообщения от 2chan
 
Регистрация: 11.07.2014
Сообщений: 69

Остановить функию из подфункции.
Итак, есть форма.
По submit форма проходит валидацию на стороне клиента, чтобы отправиться с помощью AJAX на сервер уже валидной.
Объект для работы с формой ниже. В нём метод отправки, "post":
var FuckingForm = {
	post: function() {
		if(!FuckingForm.file.files[0] && FuckingForm.textArea.value.replace('\n', '') == '') {
			FuckingForm.alert.className = "error";
			FuckingForm.alert.textContent = 'Please enter a message and/or upload an image to make a reply';
			return;
		}
		if(FuckingForm.textArea.value.length > $maxMessageLength) {
			FuckingForm.alert.className = "error";
			FuckingForm.alert.textContent = "Please shorten your message, or post it in multiple parts.";
			return;
		}
		if(FuckingForm.file.files[0] && FuckingForm.file.files[0].size > $maxFileSize) {
			FuckingForm.alert.className = "error";
			FuckingForm.alert.textContent = 'That file is larger than '+ Math.floor($maxFileSize/1024/1024) +'MB';
			return;
		}

		/* Далее AJAX-отправка */
	}
}

Так вот, захотелось перенести валидацию в отдельную функцию. Т.е. так:
var FuckingForm = {
	post: function() {
		FuckingForm.validate();

		/* Далее AJAX-отправка */
	}
}

Можно-ли остановить функцию post из функции validate? Т.е. в validate, если что-то не так, будет останавливать функцию post. Пока-что единственное что пришло в голову - проверять возвращаемое значение validate.
var FuckingForm = {
	post: function() {
		if(!FuckingForm.validate()) {
			return;
		}

		/* Далее AJAX-отправка */
	}
}

Вот суть: можно-ли остановить выполнение функции из другой функции?
Ответить с цитированием
  #2 (permalink)  
Старый 09.03.2015, 15:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

По submit форма проходит валидацию на стороне клиента, чтобы отправиться с помощью AJAX на сервер уже валидной.

Никогда данные пришедшие извне без проверки сервером не должны считаться валидными!
Ответить с цитированием
  #3 (permalink)  
Старый 09.03.2015, 15:19
Аспирант
Отправить личное сообщение для 2chan Посмотреть профиль Найти все сообщения от 2chan
 
Регистрация: 11.07.2014
Сообщений: 69

laimas,
Я и не говорю, что на сервере данные не проверяются. Просто менее затратно, да и намного быстрее, проверять всякую мелочь (вроде заполнения текстового поля или наличие файла с разрешённым форматом/размером) на стороне клиента, до отправки.

Последний раз редактировалось 2chan, 09.03.2015 в 15:23.
Ответить с цитированием
  #4 (permalink)  
Старый 09.03.2015, 15:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

>Просто менее затратно проверять на стороне клиента, до отправки.

Это "искажение реалий" называется - если севере обязан проверять, то проверка на клиенте, это как раз лишние затраты. Такая проверка, это сервис для клиента и он оправдан в том случае, если не используется асинхронный диалог клиент-сервер. А у вас асинхронный, и в чем выгода тогда?

А вообще проверять формы таким образом как вы пишете, это не только затраты, но и излишество. Вот тут подобное обсуждалось, и это мое мнение, вы можете следовать своему, но только не говорите менее затратно проверять на стороне клиента, так как в контексте ваших действий это далеко от истины.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Остановить таймер setInterval Орёл Общие вопросы Javascript 8 11.01.2015 22:07
Как остановить все активные ajax-запросы? Dimaz AJAX и COMET 8 24.09.2014 20:30
как остановить функцию? vladimir7517 jQuery 10 11.10.2013 13:17
Как остановить выполнение яваскрипта ? Serjuk AJAX и COMET 20 17.06.2012 22:32
остановить скрипт если мышка не двигалась 2 минуты на этом сайте TavRox jQuery 4 17.01.2011 15:00