Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Остановить функию из подфункции. (https://javascript.ru/forum/misc/54217-ostanovit-funkiyu-iz-podfunkcii.html)

2chan 09.03.2015 14:17

Остановить функию из подфункции.
 
Итак, есть форма.
По 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-отправка */
	}
}

Вот суть: можно-ли остановить выполнение функции из другой функции?

laimas 09.03.2015 15:10

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

Никогда данные пришедшие извне без проверки сервером не должны считаться валидными!

2chan 09.03.2015 15:19

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

laimas 09.03.2015 15:25

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

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

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


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