OnChange hors de la balise SELECT

Résolu/Fermé
Mnu Messages postés 97 Date d'inscription mercredi 11 avril 2001 Statut Membre Dernière intervention 9 janvier 2008 - 25 janv. 2006 à 15:27
 Isabelle - 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

2 réponses

Mnu Messages postés 97 Date d'inscription mercredi 11 avril 2001 Statut Membre Dernière intervention 9 janvier 2008 16
24 sept. 2007 à 23:26
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 !
1
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
0
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 ?
0