Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Непонятное завершение функции (https://javascript.ru/forum/misc/43532-neponyatnoe-zavershenie-funkcii.html)

culver 09.12.2013 19:20

Непонятное завершение функции
 
Добрый день, есть код, из функции проверки заполнения полей:
function check_vendor_new_user(){
	var checkboxes = $('.svuf_checkbox');
	var checkbox_checked = 0;
	for (var i in checkboxes) {
		if (checkboxes[i].checked) checkbox_checked = 1;
	}
	var lvalue = document.send_vendor_user_form.logname.value;
	log_checked = check_vendor_user_login(lvalue);
...

почему-то функция завершается, возвращая труе на строчке:
var lvalue = document.send_vendor_user_form.logname.value;

Подскажите пожалуйста, где искать зарытую собаку? :)

cyber 09.12.2013 19:31

culver, у меня плохая новость, строчка
var lvalue = document.send_vendor_user_form.logname.value;

не возвращает значения функции, а создает переменную и устанавливает ей значение

culver 09.12.2013 21:55

Вот именно, я не понимаю почему при пошаговом выполнении функция завершается при переходе на эту строку? Этого не должно быть.
В чём могут быть ещё проблемы?

culver 09.12.2013 22:19

Заменил эту строку на:
var lvalue = $('#login').val();

и глюк пропал.
JQuery это, конечно, прекрасно, но знать чистый JS тоже хочется.
Подскажите пожалуйста что это было?

culver 09.12.2013 23:02

Вот функция, теперь такой глюк выскакивает на последнем ифе.
function check_vendor_new_user(){
	var checkboxes = $('.svuf_checkbox');
	var checkbox_checked = 0;
	for (var i in checkboxes) {
		if (checkboxes[i].checked) checkbox_checked = 1;
	}
	var lvalue = $('#login').val();
	log_checked = check_vendor_user_login(lvalue);
	if (!log_checked) {
		alert('Please, choose another login.');
		return false;	
	}
if( document.send_vendor_user_form.company.value &&
	document.send_vendor_user_form.home_page.value &&
	(document.send_vendor_user_form.radioSet[0].checked || document.send_vendor_user_form.radioSet[1].checked || document.send_vendor_user_form.radioSet[2].checked) &&
	document.send_vendor_user_form.position.value &&
	document.send_vendor_user_form.name.value &&
	document.send_vendor_user_form.second_name.value &&
	document.send_vendor_user_form.email.value &&
	document.send_vendor_user_form.phone1.value &&
	document.send_vendor_user_form.phone2.value &&
	document.send_vendor_user_form.country.value &&
	document.send_vendor_user_form.state.value &&
	document.send_vendor_user_form.city.value &&
	document.send_vendor_user_form.zip.value &&
	document.send_vendor_user_form.adres.value &&
	document.send_vendor_user_form.pas.value &&
	checkbox_checked){
	return true;
	} else {
	alert('Please fill all * fields correctly.');
	return false;
	}
}

culver 09.12.2013 23:18

Может ли проблема быть в коде страницы или в других скриптах, которые используются на этой странице? Где нужно искать перехват? Как функция может завершаться при сравнении значений элементов?

culver 09.12.2013 23:41

Ну в первом случае return не стояло, а во втором случае (в последнем ифе) завершается при наличии пустых полей. Поэтому мне и кажется, что завершается при обращении к элементу, что есть бредом, но другого объяснения я не вижу.

culver 09.12.2013 23:57

выполняю функцию пошагово с помощью Firebug в firefox, а так как форма отправляется на сервер, то функция возвращает true.
<form style="padding:0px;margin:0px;" method="post" name="send_vendor_user_form" onsubmit="return check_vendor_new_user();" action="./vendor_edit_user.php">

culver 10.12.2013 00:01

Если вставляю alert в последнем ифе перед return true, то до его выполнения функция не доходит.

culver 10.12.2013 00:13

до проверки ифа. Сейчас в Опере проверяю - та же картина.


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