Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Внешняя валидация формы (https://javascript.ru/forum/events/26726-vneshnyaya-validaciya-formy.html)

grego 19.03.2012 21:54

Внешняя валидация формы
 
Ребята, у меня вопрос по валидации полей формы, механизм валидации следующий - при перемещении фокуса из поля идет проверка на ввод значения в данное поле и если значение есть то поле (граница, фон) закрашивается зеленым, соответственно нужно, чтобы в случае когда поле пустое оно приходило к первоначальному значению.
Так вот происходит следующим образом - при установке цвета единожды он уже не хочет меняться - подскажите что нужно использовать для того, чтобы отменить установленный в функции стиль?
Т.е. поясняю был инпут текстовый, у него цвета границ заданы не были и фон тоже - что нужно написать в функции, чтобы в случае когда пользователь удаляет значение из инпута - цвет границы и фона возвращались к первоначальным?
Я смог только задать явно границу и фон в цсс и в функции, в случае если поле пустое - устанавливаю значения заданные в цсс.
И второй вопрос, данной функцией я хочу сделать перебор всех инпутов и проверить есть в них значение или нет, но если делаю условия if else - они работают до первого true, а затем проверка заканчиевается. Как можно сделать так, чтобы перебор шел до самого последнего инпута?
Заранее благодарю.

yashka525 19.03.2012 23:03

<input id="name"/><br>
<input id="email"/><br>
<input id="other"/>
<script>
function addEvent(a,b,c){
	if(a.addEventListener){
		a.addEventListener(b,c,!1)
	}
	else if(a.attachEvent){
		a.attachEvent('on' + b,c)
	}
};

var Inputs = document.getElementsByTagName('input');

for (var i = 0;i < Inputs.length;i++){
	(function(i){
		addEvent(Inputs[i],'blur',function(){
				if(Inputs[i].value == ''){
					Inputs[i].style.backgroundColor = 'red'
				}
				else{
					Inputs[i].style.backgroundColor = 'green'
				}
			}
		);
	})(i);
};
</script>


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