Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Динамические изменение цвета кнопки (https://javascript.ru/forum/misc/19220-dinamicheskie-izmenenie-cveta-knopki.html)

prowoke 29.07.2011 02:02

Динамические изменение цвета кнопки
 
Здравствуйте. Уже 2 день пытаюсь сделать, чтобы цвет div изменялся в зависимости от заполненности форм. DIv у меня является кнопкой, которая меняет свой цвет на зелёный, если все поля заполнены и на красный, если есть пустое поле. Я делаю это так:
Вешаю такой обработчик события:


if (window.addEventListener) {
	document.addEventListener('keypress', getKey, false);
	window.addEventListener('load', emptyForm, false);
} else if (window.attachEvent) {
	document.attachEvent('onkeypress', getKey);
}

Вот сама функция emptyForm
function emptyForm() {
	var form = document.forms[0].elements;
	for (var i = 1; i < form.length; i++) {
		form[i].onchange = proof;
		form[i].onkeypress = proof;
	}
}

А вот обработчик proof
function proof() {
var elements = [];
var button = document.getElementById('button');

	var form = document.forms[0].elements;
	for (var i = 1; i<form.length; i++) {
		elements[i] = form[i];	
	}

	for (var t = 1; t < elements.length; t++) {
		if ((elements[t].type == 'text' && elements[t].value == '') || 
			(elements[t].type == 'textarea' && elements[t].value == '') ||
			(elements[t].type == 'radio' && !elements[t].checked)) {
			button.style.backgroundColor = 'red';
			return;
		}
	}
button.style.backgroundColor = 'green';
}



В итоге я получаю, то, что кнопка свой цвет не меняент, но, если убрать вот эту строчку из proof, которая проверяет была ли выбранна какая то кнопка button
(elements[t].type == 'button' && !elements[t].checked)


То код вроде работает так, как я хотел, цвет кнопки меняется, но опять же, она не меняет свой цвет в IE. А вот с этой строчкой код нигде не работает. Помогите, пожалуйста.

lalala 29.07.2011 12:16

возможно потому что атрибута checked нет для button?

prowoke 29.07.2011 18:01

Ай я яй, ну вообщем там 'radio' должен быть. Но с ним таже история. Да и итерации у меня идут с 1 потому, что у меня форма обёрнута в <fieldset>, чтобы он его пропускал.

lalala 29.07.2011 18:44

if (window.addEventListener) {
	document.addEventListener('keypress', getKey, false);
	window.addEventListener('load', emptyForm, false);
} else if (window.attachEvent) {
	window.attachEvent('onload', emptyForm, false);
	document.attachEvent('onkeypress', getKey);
}

и сюда, надеюсь я нигде не ошибся


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