11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Je suis en train de finir une appli (un agenda) qui grace à des boites à cocher, masque ou affiche des div, pour cela j'utilise prototype.js.



//Fonction de mise à jour des evenements affichés dans le mode hebdo
function refrechHebdo(id)
{
	var indexRef;
	var aff;
	
	//Mise à jour du tableau de reference des types d'evenement
	tabIndexTypeEvts.each(function(valeur,indexref){
		var a=valeur;
		if(a[0]==id)
		{
			if($("TypeEvt"+id).checked==true)
				tabIndexTypeEvts[indexref][1]=1;
			else
				tabIndexTypeEvts[indexref][1]=0;
		}	
	});
	if(tabIndexHebdoMens[0][0]!="")
	{
		//Modification de l'affichage des evenements
		indexRef=tabIndexHebdoMens[0][0];
		aff=0;
		tabIndexHebdoMens.each(function(valeur,index){
			if(valeur[0]!=indexRef)
			{
				affEvtHebdoMens(aff,indexRef);
				aff=0;		
			}
			indexRef=valeur[0];
			tabIndexTypeEvts.each(function(V,I){
				if(V[0]==valeur[1])
				{
					if(V[1]==1)
					{
						aff=1;
					}
				}	
			});		
		});
		affEvtHebdoMens(aff,indexRef);	
	}
}


//Affichage ou masquage des evenements en mode hebdo ou mensuel
function affEvtHebdoMens(aff,indexRef)
{
	if(aff==0)
	{
		if($(indexRef).visible()==true)
			$(indexRef).hide();
	}
	else
	{	
		if($(indexRef).visible()==false)
			$(indexRef).show();
	}

}



Je réalise mes test avec FireFox (Mac et Windows), IE7 (sous Vista) et IE6 (sous XP).
et enfin Safari (Mac OS 10.4 et 10.5)

Avec FF et Safari pas de problème : dès que je demande à afficher ou à masquer les div sont aussitôt masquées ou affichées, mais avec IE et quelque soit la version, je suis obligé (après avoir cocher ou décocher l'une des boites) de cliquer n'importe où dans la page pour que l'affichage soit actualisé.
Y-a-t-il un moyen de "simuler l'opération de clic dans la page"
Modifié par yannS (12 Nov 2007 - 18:15)
j'utilise onChange .... ta question m'a fait réfléchir (ça me change.... Smiley cligne )


Et Je viens de trouver cet article :
a écrit :

Problème de la balise label sous IE

Lors de l'utilisation (très conviviale et présentée dans un autre article) de la balise label associée à un radio ou une checkbox sous IE, l'évènement onChange de l'input ne se déclenche plus.
En effet, il est associé à une modification du champ (ici coché / non coché) ET à une perte de focus dudit champ. Or la balise label permet de modifier la valeur du champ sans que celui-ci reçoive le focus. Il ne le perd donc pas suite à la modification, et le onChange ne se déclenche pas. Si d'autres navigateurs savent gérer cette fonctionnalité, ce n'est pas le cas d'IE Smiley cligne
Remarque : le onChange sur un radio ou une checkbox est de toute façon problématique avec IE, puisqu'après un clic (qui modifie la valeur du champ), il n'y a pas de perte de focus, IE ne déclenche donc pas l'évènement. Il faut, pour le déclencher, sortir volontairement du champ modifié.



Je fait le test
Je viens de tester avec IE6 sous XP : eh bien ça marche...merci hakkou pour la piste à suivre.