Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1491 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [javascript/html/php]Problème Tableau html / Back IE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[javascript/html/php]Problème Tableau html / Back IE

n°1432504
supelec200​7
Posté le 28-08-2006 à 14:11:11  profilanswer
 

Bonjour à tous,
 
Je suis débutant en html/javascript et j'ai un problème sur un tableau html sur lequel j'utilise des javascript pour rajouter des lignes.
 
En fait, j'ai une page formulaire.php qui me crée un tableau en html.
Au bout de chaque ligne, j'ai des instances du script suivant, qui me permettent de remettre les valeurs de la ligne à 0, dupliquer la ligne et ajouter une ligne vierge.
 

Code :
  1. <script type=\"text/javascript\">
  2. var idx = $z;
  3. function new_name(el) {
  4.     var s = el.getAttribute(\"name\" );
  5.     s = s.replace (/\d+/, idx);
  6.     el.setAttribute (\"name\", s);
  7. }
  8. function create_row(tr,duplicate) {
  9.     var tr2 = tr.cloneNode (true);
  10.     var list1 = tr.getElementsByTagName(\"select\" );
  11.     var list2 = tr2.getElementsByTagName(\"select\" );
  12.     idx++;
  13.     for (var i = 0; i < list1.length; i++) {
  14.         if (duplicate)
  15.             list2[i].selectedIndex = list1[i].selectedIndex;
  16.  if (!duplicate && list1[i].name.substr(0,5)!=\"jourc\" )
  17.             list2[i].selectedIndex = \" \";
  18.         new_name (list2[i]);
  19.     }
  20.     list1 = tr.getElementsByTagName(\"input\" );
  21.     list2 = tr2.getElementsByTagName(\"input\" );
  22.     for (i = 0; i < list2.length; i++) {
  23.        
  24.  if (! duplicate)
  25.             list2[i].value = \" \";
  26.  if (list1[i].value==\"oui\" )
  27.   list2[i].value = list1[i].value;
  28.         new_name (list2[i]);
  29.     }
  30.     var tbody = tr.parentNode;
  31.     tbody.insertBefore (tr2, tr.nextSibling);
  32. }
  33. function delete_row(tr) {
  34. var list1 = tr.getElementsByTagName(\"select\" );
  35. for (var i = 0; i < list1.length; i++) {
  36. if (list1[i].name.substr(0,5)!=\"jourc\" )
  37.         list1[i].selectedIndex = \" \";
  38. }
  39. var list1 = tr.getElementsByTagName(\"input\" );
  40. for (var i = 0; i < list1.length; i++) {
  41.  if (list1[i].name.substr(0,7)==\"comment\" )
  42.   list1[i].value = \" \";
  43.  if (list1[i].name.substr(0,6)==\"efface\" )
  44.   list1[i].checked = \"checked\";
  45. }
  46. }
  47. </script>


 
J'appelle ce script via ces commandes, au bout de chaque ligne du tableau:

Code :
  1. <a href=\"javascript:void(0)\" onclick=\"create_row(this.parentNode.parentNode,false)\">
  2. <IMG border='0' title='Ajouter' SRC='ajouter.gif' alt='+'></a>
  3. <a href=\"javascript:void(0)\" onclick=\"create_row(this.parentNode.parentNode,true)\">
  4. <IMG border='0' title='Dupliquer' SRC='dupliquer.gif' alt='d'></a>
  5. <a href=\"javascript:void(0)\" onclick=\"delete_row(this.parentNode.parentNode)\">
  6. <IMG border='0' title='Effacer' SRC='effacer.gif' alt='e'></a>


 
Le problème est que lorsque je valide ce formulaire, je fais des vérifications diverses sur le tableau. Dans l'hypothèse où l'une de ces vérifications s'est avérée négative, via un header je vais vers une page d'erreur et j'ai alors besoin de revenir au tableau via un back du navigateur.
Avec Firefox, pas de problème, les lignes ajoutées, dupliquées etc... s'affichent. Mais avec IE, toutes les lignes sur lesquelles javascript a été utilisé reviennent à leur état initial !
Je ne sais vraiment pas d'où cela vient, étant comme je vous l'ai dit un débutant en html, javascript.
Est-ce dû à un bug d'IE. Je pencherais plutôt pour un problème d'interpétation de mon code Javascript au retour sur le tableau, qui ne serait en fait pas exécuté par IE.
 
J'ai pas mal cherché sur le Web et sur ce forum, mais je n'ai pas trouvé de réponse satisfaisante.
 
Merci beaucoup pour votre aide.


Message édité par supelec2007 le 28-08-2006 à 14:13:30
mood
Publicité
Posté le 28-08-2006 à 14:11:11  profilanswer
 

n°1432537
jbourdello​n
Posté le 28-08-2006 à 14:50:54  profilanswer
 

Je crois que Firefox garde en mémoire la dernière page telle quelle ( donc avec les modifs) alors que IE rappelle la page depuis le serveur (donc sans les modifs)

n°1432559
supelec200​7
Posté le 28-08-2006 à 15:10:36  profilanswer
 

jbourdellon a écrit :

Je crois que Firefox garde en mémoire la dernière page telle quelle ( donc avec les modifs) alors que IE rappelle la page depuis le serveur (donc sans les modifs)


 
Tout d'abord, merci pour ta réponse.
 
En fait, je pensais comme toi que IE rappelait la page, mais ce qui m'étonne, c'est que si je renseigne des lignes de mon tableau qui ont été générées dès le début( i.e pas rajoutées via le javascript), en utilisant les menus déroulants, les cases à cocher, les zones de texte etc... et que je lance ensuite la validation et les vérifications, alors, lors de mon retour via un back, les données que j'ai rentré sont toujours présentes ! (i.e liste déroulant sélectionnée comme je l'avais laisée, zone de texte remplie xcomme je l'ai saisie etc...)
 
IE seraît il sélectif pour garder les infos dans sa mémoire ?  
Peut-on lui imposer de "conserver" les javascript ?
 
Merci

n°1432561
jbourdello​n
Posté le 28-08-2006 à 15:13:26  profilanswer
 

Ben disons qu'a mon avis la page précédente pour IE c'est la page AVEC les champs du form remplis  
 
Pour ce qui est de "conserver le javascript" étant donné que tu modifie le code html de la page , et qu'aucune copie ou sauvegarde n'est effectuée je crois que ca va pas être possible

n°1432584
anapajari
s/travail/glanding on hfr/gs;
Posté le 28-08-2006 à 15:28:56  profilanswer
 

sur ce genre de problème, il devient généralement nécessaire de faire ta validation et tes verifications via un xmlHttpRequest. Ainsi tu ne changes pas de page et tu gardes les modifications effecutées dans ta page via du js.
 
Par ailleurs:

Code :
  1. href="javascript:void(0)" onclick="create_row(this.parentNode.parentNode,false)"


c'est pas terrible il vaut mieux faire:

Code :
  1. href="" onclick=" return create_row(this.parentNode.parentNode,false)"


sans oublier d'ajouter un return false dans ta fonction create_row

n°1432603
supelec200​7
Posté le 28-08-2006 à 15:47:41  profilanswer
 

J'ai regardé vite fait le xmlHttpRequest, ça n'a pas l'air évident pour un débutant comme moi.
 
Est-ce que tu ne penses pas qu'il serait possible de s'en tirer avec une pop-up ou autre ?
En fait, quand je valide ma page, je vais via le formulaire vers une page de traitement qui vérifie les données et interragit avec ma base de données si tout est OK, puis j'affiche une page qui est générée via un header.  
Il faudrait donc que ma page de traitement se fasse dans une pop-up et si tout est ok, afficher ma page finale dans la fenêtre principale.
 
Tu crois que ça pourrait marcher ?
Je sais pas trop comment faire, surout pour revenir dans la fenêtre principale t fermer automatiquement la pop-up.


Message édité par supelec2007 le 28-08-2006 à 17:10:35

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [javascript/html/php]Problème Tableau html / Back IE

 

Sujets relatifs
problème : méthode Cells de l'objet global a échouéJasper Report : Générer un pdf à partir d'un flux HTML
Probleme connexion BD freeTableau multidimensionnel [Résolu]
Problème de présentation en vbProbleme de styles
Problème Coppermine : "Template error"Espace blanc entre deux fonds de deux fichier html
Probléme de résolution [HTML/CSS] 
Plus de sujets relatifs à : [javascript/html/php]Problème Tableau html / Back IE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR