Posez votre question Signaler

OnChange hors de la balise SELECT [Résolu]

Mnu 102Messages postés 11 avril 2001Date d'inscription - Dernière réponse le 24 mars 2008 à 11:15
Bonjour,

Je voudrais savoir s'il est possible d'utiliser un onChange hors de la balise HTML <SELECT>. En fait, je veux détecter si l'utilisateur change la valeur d'une liste déroulante SELECT dont je ne peux modifier la balise... (pour des raisons de structure de mon appli)

J'ai essayé:
document.getElementById("Ma_liste").onchange=ma_fonction();

Mais ça marche pas...

Vous avez une idée ?

Merci
Lire la suite 

OnChange hors de la balise SELECT »

3 réponses
Réponse
+1
moins plus
Merci merci... je viens (tardivement) de lire ta réponse: elle est relativement obscure encore pour moi, mais je vais y travailler...

En tout cas, merci d'avoir pris le temps de me répondre !
Isabelle - 24 mars 2008 à 11:15
bonjour,

depuis le temps, tu dois avoir la réponse à ta question.
Mais bon, on sait jamais... et puis ça peut servir à d'autres personnes !

L'erreur était simplement que lorsque tu affectes une méthode à un événement, lorsque tu ne décris pas la fonction (mais que tu références la méthode, comme tu le faisais), il ne faut pas de parenthèses derrière le nom de la méthode ! ;-)
J'ai eu le même souci hier soir et comme firefox ne donnait pas d'erreur dans la console, j'ai mis du temps à trouver... !

Bonne continuation,
Isabelle
Ajouter un commentaire
Réponse
+0
moins plus
Oui, c'est faisable.
Il te faut pour celà une fonction pour attacher un gestionnaire d'évènement (une fonction) à l'évènement onchange de ta balise SELECT.
function attachEvent(o,e,f,c){
	if(o.addEventListener)
		o.addEventListener(e,f,c);
	else
		if(o.attachEvent)
			o.attachEvent("on"+e,f);
		else
			eval("o.on"+e+"="+f)
}


Ensuite, il faut que tu appelles cette fonction au chargement de ta page. (obligé d'attendre le chargement de ta page, sinon ton document.getElementById() ne te renverra rien, et le gestionnaire d'évènement ne sera pas lié à la balise.
function init(){
	attachEvent(document.getElementById('select2'),'change',ma_fonction,false);
}
window.onload = init ;

ma_fonction est le nom de ta fonction qui sera appellée sur l'évènement onchange de la balise. Elle reçoit un paramètre implicite à savoir l'évènement, ou rien pour IE. Donc, pour IE, on récupère l'évènement que reçoit la fenêtre. A partir de cette évènement, tu peux remonter à la source de cette évènement (la balise select) grace à la propriété target(navigateurs DOM) ou source (IE) pour récupérer sa valeur.
function ma_fonction(e){
	var source = (document.all)?window.event.srcElement:e.target ;
	alert('valeur du select = '+source.options[source.selectedIndex].value) ;
}

Is it allright ?
Ajouter un commentaire
Ce document intitulé « onChange hors de la balise SELECT » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?