11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je voudrais ajouter du javascript aux élément de mon formulaire en fonction de leur classe (des input de class 'oblig' et des inputs de class 'facul' (obligatoire et facultatif) :



window.onload = initForm;

function initForm(){
	var input = document.getElementsByTagName('input');
	for (var i=0;i<input.length;i++) {
		if (input[-i].className== "oblig"){
			input[-i].onkeyup = function(){verifOblig( input[-i] )};
		}
		else if(input[-i].className == "facul") {
			input[-i].onkeyup = function(){verifFacul( input [-i] )};
		}
	}
}

function verifOblig(elem){
	if(elem.value != '') {
		elem.style.backgroundColor="#AAFF00";
		return true;		
	}
	else {
		elem.style.backgroundColor="red";
		return false;
	}
}

function verifFacul(elem){
	elem.style.backgroundColor="#AAFF00";
	return true;
}

Cependant, cela ne semble pas fonctionner correctement..
Quelqu'un aurait une solution ?

Erreur : elem has no properties
Fichier source :  http://localhost/projet/presentation/js/form.js
 
Ligne : 14


Merci

Edit : haha, le forum veut fermer tous les [ -i ] de mon code Smiley ravi
Modifié par Dark elf (02 May 2007 - 17:13)
C'est bizarre car quand je fais ainsi :

function initForm(){

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

	for (var i=0;i<input.length;i++) {

		if (input.className== "oblig"){

			input[-i].onkeyup = verifOblig( input[-i] );

		}

		else if(input[-i].className == "facul") {

			input[-i].onkeyup = verifFacul( input [-i] );

		}

	}

}


Le code s'éxécute bien.. Smiley ohwell
(mais dès qu'on charge la page et non dès que onkeyup survient, forcément)
Modifié par Dark elf (02 May 2007 - 16:55)
OK j'ai cerné l'affaire.
Le problème d'une fonction anonyme function(){ ton code } c'est que tu sors un peu du cadre. Une fois dans ta fonction anonyme, input[] n'existe plus à proprement parler (puisque cette variable n'est définie que lors du parcours de ta boucle, pas lors de l'évènement onkeyup).

Tu devrais mettre ça à la place :
input[-i].onkeyup = function(){verifFacul( this )};


this fait référence à l'objet concerné, en l'occurence input[-i] Smiley cligne