Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с замыканиями (https://javascript.ru/forum/misc/29787-problema-s-zamykaniyami.html)

Caminante 11.07.2012 12:50

Проблема с замыканиями
 
Добрый день!

Прошу помочь разобраться, что не так в моем коде.
Есть форма с id="ask". После того, как пользователь заполнил все поля, нужно заменить кнопку отправки на активную. Для проверки пишу функцию, которая должна проверить все поля и в итоге возвратить true, если они все заполнены. Проверка выполняется каждый раз по keypress в поле.

function checkInput()
	{	
		function asks(i)
		{		
			if(ask.elements[i].tagName != 'INPUT' && ask.elements[i].tagName != 'TEXTAREA') 
			{
				if(i < ask.elements.length-1)
				{
					asks(i+1);
				}
				else
				{
					return true;
				}
			}
			
			else
			{
				if(ask.elements[i].value == '')
				return false;
				else
				{
					if(i < ask.elements.length-1)
					{
						asks(i+1)
					}
					else
					{
					//	if(i = ask.elements.length-1)
						return true;				
					}
			 	}
			 		
			}		 
		}
		
     alert(asks(1));

	}


//отсчет с 1 намеренный, т.к. первое поле hidden
При попытке ввести что-то во второе поле выдает undefined.

Наверное, все это можно решить как-то проще, но что-то сейчас ничего не выходит. Да и в любом случае хотелось бы разобраться в ошибке.

Заранее спасибо!

B@rmaley.e><e 11.07.2012 13:23

Какой функциональный подход… Программируете на каком-либо из функциональных языков?
1. Вы ничего не возвращаете из функции при рекурсивном вызове asks.
2. Откройте для себя удивительный мир императивных ЯП, в которых имеется конструкция for.

Caminante 11.07.2012 13:31

B@rmaley.e><e, точно же!..
Нет, наверное, это переизбыток теории сказался :)

С for'a все и начиналось, но что-то не заладилось. Пожалуй, вернусь-таки к нему, спасибо.


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