Reset de formulaire ne fonctionnant pas sur tableau créé dynamiquement avec cham [Résolu]

Signaler
Messages postés
39
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
24 novembre 2010
-
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
-

Salut tout le monde,bon j'ai un problème à m'arracher les cheveux...je vous met ci-joint le code html et le fichier .js et le stylesheetvous pouvez les mettre dans le même répertoire pour tester...Mon problème est le suivant :j'ai un tableau géré dynamiquement par le javascript : ajout/suppression/tri de lignes (il devient visible en choisissant type de réponse "choix unique" ou "choix multiple").En bas de ce formulaire j'ai un bouton 'reset' qui en fait fait un appel à une fonction js car le bouton réinitialise uniquement les input, pas le tableau...donc ma fonction est censée gérer la remise "à l'identique" (suppression des lignes ajoutées) du tableau avant modification...mais voilà ça ne fonctionne pas ..... :- ...je n'ai pas d'erreur !- ...mes input créés dynamiquement dans les lignes du tableau sont réinitialisés aléatoirement !- ...ceraines lignes sont supprimées mais pas toutes.-...bref je vois pas ce qui déconne ...sauf peut-être IE7...mais là je suis dans la m...ouise pour être poliHEEELLLLLPPPPP SVP !Merci par avance de votre aide !HB=======================================================================FICHIER HTML (index.html) :===================== bug                                                                               Titre :                                                        Question :                                                          Réponse :                                    Obligatoire             Facultative                                                 Points :                                                        Type de réponse :                                    Texte               Choix unique              Choix multiple                                                             Liste de choix :              (100 rép. max.)                                                                        N°                  Choix                  Action                                                                                                                                        Autorisations participants:                                  Permettre aux participants d'argumenter les QCM                                Permettre aux participants de joindre un fichier                                    Fichier (10 Mo max.) :                                                                                                             
=======================================================================FICHIER JS (coqUtils.js) :==================//=================================//DEFINITION DES VARIABLES GLOBALES//=================================var tableau;
//===============================//AJOUT DES EVENTLISTENER ONLOAD//===============================if(typeof window.addEventListener != 'undefined') //.. gecko, safari, konqueror and standard  window.addEventListener('load', Init, false);else if(typeof document.addEventListener != 'undefined') //.. opera 7  document.addEventListener('load', Init, false);else if(typeof window.attachEvent != 'undefined') //.. win/ie  window.attachEvent('onload', Init);
//==========================//FONCTION D'INITIALISATIONS//==========================function Init(){ //Placer ici toutes les fonctions devant être executées au chargement InitTabQcm();}
//======================================================function InitTabQcm()//Initialisation du tableau des Qcm//======================================================{ tableau=ElemByID('tabQcm'); ElemByID('qcmcompt').value=tableau.rows.length; if (ElemByID('tpl_shwfrmquest').value=="yes"){  ElemByID('frmQuest').style.display='block'; } ShowFrmQcm('tpl_anstyp', 'frmQcm');}

//==================================================function ElemByID(id)//==Retourne un objet valide==//=================================================={  if (document.getElementById) {   return document.getElementById(id);  } else if(document.all) {   return document.all(id);  } else if (document.layers) {   return document.layers[id];  } else {  return null; }}
//========================================function CreateElementWithName(type, name)//========================================{  var element;  // First try the IE way; if this fails then use the standard way  if (document.all) {    element =  document.createElement('< '+type+' name="'+name+'" />');  }  else {    element = document.createElement(type);    element.setAttribute('name', name);  }  return element;}
//=====================================================function Reset(frm_id)//==Afficher/Masquer un ==//====================================================={ //remise à zero du form ElemByID(frm_id).reset();
 //Masquage du div qcm si besoin ShowFrmQcm('tpl_anstyp', 'frmQcm'); //supression des lignes ajoutées par l'utilisateur for (var i=1; i0)  {   //Affectation du champ caché comportant le n° de ligne cible   ElemByID("qcmnum").value=i;   //Suppression de la ligne cible   DeleteRow(false);   //Décrémentation du compteur suite à la suppression de ligne   i=i-1;  } } }
//=====================================================function Show(id, value)//==Afficher/Masquer un ==//====================================================={ ElemByID(id).style.display=value;}
//===========================================================function ShowFrmQcm(selId, frmId)//==Afficher/Masquer les qcm//==========================================================={ var i = 0;
 if (ElemByID(selId).value==1) {   ElemByID(frmId).style.display='none';  ElemByID('tpl_autharg').style.display='none'; } else if(ElemByID(selId).value==2 || ElemByID(selId).value==3){  ElemByID(frmId).style.display='block';  ElemByID('tpl_autharg').style.display='inline'; }
}
//=============================================================function AddLine() //== ajout d'une ligne//============================================================={ //On autorise 100 qcm max if(tableau.rows.length==101) {  return; } //Declaration des variables //var timestamp = Math.floor((new Date()).getTime() / 1000); var rownum  = tableau.rows.length; var row   = tableau.insertRow(rownum); var compt  = Number(ElemByID("qcmcompt").value)+1; //Affectation du compteur de lignes créées y compris celles supprimées ElemByID("qcmcompt").value = compt;
 //Affecter la classe à la ligne row.setAttribute("className","blueFineTr");//IE row.setAttribute("class","blueFineTr");//FF  //Ajouter les cellules for (var cellpos=0;cellpos

12 réponses

Messages postés
39
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
24 novembre 2010

ME REVOILA .....BEN LES MECS CA TUE LE JAVASCRIPT !!!!

bon...ben en fait c'était con...à chaque création (et donc déplacement de ligne), je faisais un "macellule".innerHTML=i avec i étant le numéro de ligne pour faire joli....sauf que c'est pas de bol, ...dans ma jolie ptite cellule (pour faire joli) j'avais un coquin de input hidden qui se cachait (normal me direz vous)...
et ben ce coquin ee plus d'être cachotié...c'était une balance ...NAN PAS POSSIBLE ! ...sisisisiisisi ...je le récupérais pour identifier la ligne comme étant dynamique....et donc pour la supprimer en cas de reset...

...et tout ça pour m'apercevoir qu'au final...je me fais c...pour rien car il suffit au lieu de faire du javascript sur le bouton reset un simple
type="button" value="Initialiser" onClick="Reload de l'url appelée"/> et le tour était joué
...ce qui m'évite au final d'avoir à gérer en plus la réinsertion des lignes supprimées et existantes avant modification !

en tout cas merci à toi quand même nicom
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour,
on se plaint toujours de na pas avoir de code... ben là on en a !
et trop ! je m'y noie perso.
tu ne pourrait pas ectraire le strict nécessaire de ce qui ne fonctionne pas ?
parce que franchement, là, ça décourage.

>>bref je vois pas ce qui déconne ...sauf peut-être IE7..
oublie. c'est toujours celui qui code qui fait les erreurs
il n'ya aucun bug dans aucun navigateur
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
29
Salut,

Pourquoi tu met un inpu type='button' avec dans le onclick une fonction reset ?

ça serai vachement plus simple avec un input type='reset' !!!

Pour ce qui est de la quantité de code, je ne peus qu'être daccord avec bultez !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
ah... je n'ai même pas regardé le code !
nico doit avoir raison !   :    plus simple avec un input type='reset' !!!     ben oui.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
29
lol bultez,

Je suis content pour une fois que j'arrive a trouver une solution avant toi (très rare) !

Le truc qui casse l'embiance : pas la solution !

lol

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
39
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
24 novembre 2010

Ben les mecs...franchement ...le coup du bouton reset vous me faîtes mal au coeur !
1) si j'ai pas fait un bouton reset c'est justement parce que ça ne suffit pas !!!!
avec le bouton reset le formulaire est bien réinitialisé mais le tableau ne reprend pas sa forme initiale, il laisse des belles lignes blanches qui ne ressemblent plus à rien....surtout lorsque l'utilisateur rappelle en modif un enregistrement pour le modifier, des lignes sont ajoutées....déplacées....puis un beau reset....ben là j'ai des lignes blanches au milieu de nulle part...ça fait con quand même
2) et dire que je m'étais donné du mal à ne laisser que le code essentiel...et fonctionnel en plus...en fait si je retire du code, ben ça ne marche plus si vous voulez le tester...donc je suis obligé de le laisser...faut savoir ce que voulez les enfants...

...vous avez toujours pas mieux que le bouton reset en réserve ?
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
29
A ok,

Monsieur nous prend de haut, ça te fait mal au coeur ?

Et ba moi aussi, putain, c'est fou la reconnaissance qu'on a sur ce site avec des membres comme toi, heureusement qu'ils n'ont pas tous ton caractère !

On t'aide et tu nous prend de haut mais faut savoir, réfléchie 5 minutes sur cette question :

Qui c'est qui a besoin d'aide ? c'est nous ou c'est toi ?

Non mais je rêve, on s'enmèrde a déchiffrer ton code et tu nous envoi chier en disant qu'on est nul que c'est normal...

Excuse moi mais si c'était normal fallait le marquer !

a++

PS : démerde toi !

PS2 : Un petit conseil : change de caractère et si tu ne veus pas de réponse a coté de ce que tu désire réellement met bien dans ton message les indications nécessaire !

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
39
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
24 novembre 2010

olala nico, franchement je disais ça pour rire ...si j'avais sû je n'aurai pas écris ça !
en plus je pense honnêtement que j'ai encore beaucoup à apprendre ...tu serais pas un peu susceptible ?

...mais franchement, avoue que c'est bizarre ...
en plus, je viens de tester sous firefox...j'ai même ma fonction ElementByID() qui n'y marche pas...ni document.getElementById("qcmnum") qui me retourne null...
ça m'a d'ailleurs fait constater que IE quand y a que la propriété name il trouve quand meme l'element avec getElementById ....du coup j'y ai rajouté la propriété id ...mais meme avec ça FF marche pas
...franchement je désespère...
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
29
ok, j'avoue que je suis un peut suceptible...

J'ai eu une dur journée, mon patron me stress parce que je dois finir un chat pour ce soir et qu'il me manque une solution pour boucler le projet mais personne ne sait quoi me répondre !

Désolé !

C'est bizzare, tu as mis quoi comme doctype ?

Sinon tu n'a pas desactivé le javascript ? (question conne mais on ne sait jamais !)

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
39
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
24 novembre 2010

Dans ce cas je compatis, c'est effectivement pas drôle...les boss...surtout pour les délais...allez la journée est finie maintenant !
Moi c'est pareil...j'vais me faire un plat de pâtes pour me remonter le moral...

...pour le javascript...non non, il est pas désactivé...(malheureusement)...et le doctype c'est celui là :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

(j'ai bien fais attention à fermer mes balises, mettre des quotes et tout en minuscule...mais y'a ptete quelque chose qui m'échape)
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
29
ok,

merci, ba je ne vois pas alors, j'attend un petit cours de bultez !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
29
ok,

O, un revenant ! lol

Je suis content que tu est réussi a trouver une solution tout seul, bravo !

De rien, je n'ai rien fait a part te criéer dessus au sens propre et a t'insulter !

a++

Si la réponse vous convient, pensez : Réponse acceptée !