Incompatibilité code HTML/Javascript Firefox / IE7

Incompatibilité code HTML/Javascript Firefox / IE7 - HTML/CSS - Programmation

Marsh Posté le 27-08-2008 à 14:42:19    

Bonjour,
J'ai un petit souci avec un bout de code.
Il fonctionne sans problèmes sous Ffox 2 et Ffox3, dans mes recherches j'ai vu que IE 7 ne supportait plus les "onChange/onClick" dans une balise SELECT mais ce n'est pas le cas ici, la fonction javascript se lance bien, mais le paramètre - un simple "this.value" - n'est pas pris en compte.
Les bouts de code fautifs :

Code :
  1. <Script type="text/javascript">
  2.   function majEntryToDisplay(nom) {
  3.    document.completerChamps.nomEntry.value=nom;
  4.    document.completerChamps.goCompleterChamps.click();
  5.   }
  6. </SCRIPT>
  7. ------------------------------------------------------------------------------------------
  8. <SELECT name="nomToDisplay" onChange="majEntryToDisplay(this.value);">
  9. <?php
  10. $select_annuaire=mysql_query("SELECT * FROM `annuaire` ORDER BY nom" );
  11.  if (mysql_num_rows($select_annuaire) > 0)
  12.   {
  13.   while($row=mysql_fetch_row($select_annuaire))
  14.    {
  15.    if ($row[1]==$nom) {
  16.    ?>
  17.     <OPTION SELECTED><?php echo $row[1]; ?></OPTION>
  18.    <?php
  19.    }
  20.    else {
  21.    ?>
  22.            <OPTION><?php echo $row[1]; ?></OPTION>
  23.    <?php
  24.    }
  25.   }
  26.  }
  27. ?>
  28. </SELECT>
  29. ------------------------------------------------------------------------------------------
  30. <div style="visibility:hidden;">
  31. <form name="completerChamps" method="post">
  32.  <input type="text" name="nomEntry" value="">
  33.  <input name="goCompleterChamps" type="submit" >
  34. </form>
  35. </div>


Si on met un alert(nom) dans la fonction majEntryToDisplay le alert s'ouvre mais n'affiche rien, j'en déduis donc que le this.value n'est pas passé.
Je sais, le mécanisme de passage de valeur est un peu "old school" mais je n'ai pas de notions d'Ajax ou quoi, je suis plutôt du genre POO...
Je fais comme ça parce qu'après on recharge cette page mais avec des données dans le $_POST et suivant ça, différents traitements se lancent.
Le truc c'est que j'aimerai bien que ça soit "dynamique", ie qu'il n'y ait pas besoin de cliquer quelque part d'autre que dans le SELECT, ça deviendra vite lourd pour les utilisateurs majoritairement sous IE 7 ... :(

 

Donc après le click, la page php vérifie $_POST['nomEntry'] et s'il existe et est non vide, moulinette.

 

Merci d'y jeter un oeil.


Message édité par ZeMuf91 le 27-08-2008 à 15:03:09

---------------
Cours CPF d'Anglais et FLE à Nantes et en ligne - qualiopi
Reply

Marsh Posté le 27-08-2008 à 14:42:19   

Reply

Marsh Posté le 27-08-2008 à 15:11:39    

Mille excuses, la réponse pourra intéresser quelques néophytes comme moi.
Il manquait les "value" de chaque OPTION que Firefox considère par défaut comme la chaine de caractères entre les balises <OPTION> et </OPTION>.
Donc voici le bon code :

Code :
  1. if ($row[1]==$nom) {
  2. ?>
  3. <OPTION SELECTED value="<?php echo $row[1]; ?>"><?php echo $row[1]; ?></OPTION>
  4. <?php
  5. }
  6. else {
  7. ?>
  8. <OPTION value="<?php echo $row[1]; ?>"><?php echo $row[1]; ?></OPTION>
  9. <?php
  10. }
 

@+


Message édité par ZeMuf91 le 27-08-2008 à 15:31:17

---------------
Cours CPF d'Anglais et FLE à Nantes et en ligne - qualiopi
Reply

Marsh Posté le 27-08-2008 à 15:24:54    

bonjour,
>>j'ai vu que IE 7 ne supportait plus les "onChange/onClick" dans une balise SELECT
si si ! heureusement.
par contre, il ne l'a jamais permis sur les options.
@+


---------------
[mon site] [m'écrire]
Reply

Marsh Posté le 27-08-2008 à 15:32:40    

J'ai pu m'en rendre compte ! Par contre, pourquoi placer un contrôleur d'evênement sur un Option ?  
 
En tout cas merci de ta visite.


---------------
Cours CPF d'Anglais et FLE à Nantes et en ligne - qualiopi
Reply

Marsh Posté le 28-08-2008 à 03:46:54    

un onclick sur une option ca permet de faire des trucs assez dynamiques (menus, listes liées....)


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

Sujets relatifs:

Leave a Replay

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