[Javascript] - IE6 : Impossible d'activer le contrôle

- IE6 : Impossible d'activer le contrôle [Javascript] - HTML/CSS - Programmation

Marsh Posté le 16-11-2008 à 16:36:11    

Bonjour à tous,
 
je suis assez étonné par le peu de solution proposée sur google pour mon problème. J'ai développé un calculateur en php/jscript et forcément...il marche nickel
sur IE7 et Firefox 2 et +, mais comme 20% des internautes sont encore sous IE6...il faut que je pense aussi à eux.
 
Alors voilà mon problème :
 
Ligne 341
Car 11
Erreur Impossible d'activer le contrôle car celui-ci est soit invisible, soit inactif, soit d'un type ne reconnaissant pas cette fonctionnalité.
 
et voici la section incriminée :
 

Code :
  1. <script type="text/javascript">
  2. //<![CDATA[
  3.       nbpages = 7; //nombre d'onglets
  4.       function page(npage) {
  5.         liste_onglets = document.getElementById("onglets" ).getElementsByTagName("li" );
  6.  for (i=0; i<liste_onglets.length; i++) {
  7.    liste_onglets[i].className = "";
  8.         }
  9.         document.getElementById("onglet" + npage).className = "active";
  10.         for (i=1; i<=nbpages; i++) {
  11.           document.getElementById("contenu" + i).className = "nonactive";
  12.     }
  13.         page_elt = document.getElementById("contenu" + npage);
  14.         page_elt.className = "active";
  15.         if (page_elt.getElementsByTagName("input" )[0] != null) {
  16.           page_elt.getElementsByTagName("input" )[0].focus();
  17.           page_elt.getElementsByTagName("input" )[0].select();
  18.         }
  19.       }
  20.   //]]>  
  21.     </script>


 
Gros somodo, ce script gère l'affichage de conteneur DIV (sorte de menu).
 
Merci pour votre aide car là je suis bel et bien bloqué. :??:

Reply

Marsh Posté le 16-11-2008 à 16:36:11   

Reply

Marsh Posté le 16-11-2008 à 16:37:38    

PS : la ligne 341 correspond à la ligne 18 sur le post précédent.


---------------
EOS 5D mk II | 17-40 f/4 L USM | 50 f/1.4 USM | 135 f/2 L USM
Reply

Marsh Posté le 16-11-2008 à 20:07:09    

je pense plutot que c ets le bloc en ligne 20 qui déclenche l erreur
ie essaie d attacher un evenement sur un objet qui n existe pas ou qui ne peut pas recevoir ce type de methode
essaie dans un premier temps
if (page_elt.getElementsByTagName("input" )[0])
qui devrait marcher tout aussi bien


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 16-11-2008 à 22:23:09    

mIRROR a écrit :

je pense plutot que c ets le bloc en ligne 20 qui déclenche l erreur
ie essaie d attacher un evenement sur un objet qui n existe pas ou qui ne peut pas recevoir ce type de methode
essaie dans un premier temps
if (page_elt.getElementsByTagName("input" )[0])
qui devrait marcher tout aussi bien


 
Je te remercie, je test ça demain, et te donnerai des nouvelles.
 
Salut  :hello:

Reply

Marsh Posté le 17-11-2008 à 10:36:08    

ça ne marche pas :(

Reply

Marsh Posté le 17-11-2008 à 10:59:48    

bon bah commence par sortir ie6 completement de la boucle, on verra bien si l erreur est vraiment là

Code :
  1. if (page_elt.getElementsByTagName("input" )[0] && window.XMLHttpRequest)


 


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 17-11-2008 à 12:01:20    

idem. Quand je place un alert(page_elt.getElementsByTagName("input" )[0]) avant la condition, sur IE6 j'ai [Object] et sur ff j'ai [Object HTMLInputElement].
 
_________________________________
 
Sinon, j'ai un autre petit problème sur un contrôle de saisie de mon formulaire (toujours avec IE6 alors qu'IE7 et FF ok).
 

Code :
  1. function valider(champtest){
  2. var nombre = document.getElementById(champtest).value;
  3.         if(!isNaN(nombre))
  4.  {
  5.  alert('ok');
  6.  }
  7.         else
  8.                 {
  9.   alert("La valeur saisie n'est pas un nombre !" );
  10.   document.getElementById(champtest).value=0;
  11.   }
  12.         return false;
  13.     }


 
exemple de champ testé :

Code :
  1. <input name="param2x15" id="param2x15" value="<?= variable("param2x15" ); ?>" size="8" onchange="valider('param2x17'); return false;"/>


 
le symptôme : sous IE6, je n'arrive plus à aller sur un autre champ, le message d'alerte revient à chaque fois que je clique ailleurs, alors que ça fonctionne sous IE7 et Firefox.
 
Merci encore, j'ai un peu honte de vous demander autant d'aide.


Message édité par endozen le 17-11-2008 à 12:03:14

---------------
EOS 5D mk II | 17-40 f/4 L USM | 50 f/1.4 USM | 135 f/2 L USM
Reply

Marsh Posté le 17-11-2008 à 12:27:14    

pour la première partie ca veut dire que l erreur ne vient pas du code que tu as montré
utilise un vrai debugger
http://blogs.msdn.com/ie/archive/2 [...] 47912.aspx
 
sinon onchange c est pour les select


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 17-11-2008 à 12:39:30    

je dois utiliser quoi alors pour les champs ?


---------------
EOS 5D mk II | 17-40 f/4 L USM | 50 f/1.4 USM | 135 f/2 L USM
Reply

Marsh Posté le 17-11-2008 à 12:45:06    

tu les vérifie au submit


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 17-11-2008 à 12:45:06   

Reply

Marsh Posté le 17-11-2008 à 13:58:31    

J'aimerai que la vérification se fasse à chaque saisie, c'est pas possible ?


---------------
EOS 5D mk II | 17-40 f/4 L USM | 50 f/1.4 USM | 135 f/2 L USM
Reply

Marsh Posté le 17-11-2008 à 14:37:03    

essaie plutot avec onkeypress


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 18-11-2008 à 21:32:20    

merci.


---------------
EOS 5D mk II | 17-40 f/4 L USM | 50 f/1.4 USM | 135 f/2 L USM
Reply

Marsh Posté le 19-11-2008 à 18:49:38    


 
en fait, cela ne marche point.
 
champ testé :  
 

Code :
  1. <input name="param2x15" id="param2x15" value="<?= variable("param2x15" ); ?>" size="8"  onchange="valider('param2x15'); return false;"/>


 
js :
 

Code :
  1. function valider(champtest){
  2.         var nombre = document.getElementById(champtest).value;
  3.         if(!isNaN(nombre))
  4.  {
  5.  document.getElementById(champtest).value=document.getElementById(champtest).value;
  6.  }
  7.         else
  8.          {
  9.   alert("La valeur saisie n'est pas un nombre !" );
  10.   document.getElementById(champtest).value=0;
  11.   }
  12.         return false;
  13.     }


 
ca marche avec tous les navigateurs sauf que sur IE je dois appuyer deux fois sur TAB pour passer au champ suivant. Avec onkeypress, c'est pire, je ne peux plus rien écrire du tout. Une iday nouvelle ?


Message édité par endozen le 19-11-2008 à 18:54:39

---------------
EOS 5D mk II | 17-40 f/4 L USM | 50 f/1.4 USM | 135 f/2 L USM
Reply

Marsh Posté le 19-11-2008 à 19:59:49    

ok on s est mal compris
tu veux lancer la validation quand tu sors du champ et pas quand on le modifie
 

Code :
  1. <input type="text" name="param2x15" id="param2x15" value="<?= variable("param2x15" ); ?>" size="8"  onchange="valider(this.value,this.id);"/>


 

Code :
  1. function valider(val,id){
  2.     if(isNaN(val)) {
  3.         alert("La valeur saisie n'est pas un nombre !" );
  4.         document.getElementById(id).value=0;
  5.     }
  6. }


 
au pire tu peux essayer aussi onblur
sinon t en es ou sur ton premier probleme ?


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 20-11-2008 à 10:09:27    

great, ca marche nickel avec la propriété onblur.
 
Pour le premier problème, je n'ai pas avancé (je n'ai pas eu le temps de lancer le debugger).
 
Amicalement.


---------------
EOS 5D mk II | 17-40 f/4 L USM | 50 f/1.4 USM | 135 f/2 L USM
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed