IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Cr�ation obj/form non accessibles


Sujet :

JavaScript

  1. #1
    Membre �prouv� Avatar de speedev
    Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par d�faut [AJAX] Cr�ation obj/form non accessibles
    Salut,

    Bon j'ai d�j� eu ce probl�me, je l'ai d�j� r�solu mais l�, depuis hier je n'y parviens pas!

    Manip:
    Saisie d'un num�ro d'identification dans un champ, une fois rempli, requ�te auto pour v�rifier son existence (ajax).
    Si existe, deux listes box sont g�n�r�es de donn�es dans la base correspondantes � cet identifiant (ces deux listes sont d�j� pr�sentes mais vides au d�but de la saisie).
    Sinon, deux liste box suppl�mentaires sont ajout�es (non existantes dans le formulaire) afin que l'ont saisisse des crit�res de reconnaissance (manuellement) autre que l'identifiant.

    Pb:
    Je ne parviens pas � remplir (Ajax) les deux listes ajout�es par la m�thode addRow car elles sont apparement inaccessibles.
    Firefox me renvoie "document.forms.frm_produit2.chp_mar_mob has no properties".
    J'ai test� avec un simple champ input mais c'est le mm pb, rien n'est consid�r� comme ajout� au formulaire en question.

    Maintenant le code que je vous d�pouille pour �claircir:

    HTML:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    [...]
    <form name="frm_produit2" action="truc.php" method="GET" onSubmit="javascript:return(false);">
    [...]
    <tr><td colspan="2"><table id="table_suppl"></table></td></tr>
    Les lignes seront donc ajout�es au tableau d'id "table_suppl"...

    Contr�le AJAX lorsqu'on saisi l'identifiant dans un input sur la page :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function remplir_FabTypAch(obj) 
    {
    	montre("bloc",1);
    	var t_num = obj.responseXML.getElementsByTagName('donnee');
    	encours = t_num [0].getAttribute("encours");
    	trouve = t_num [0].getAttribute("trouve");
    	inconnu = t_num [0].getAttribute("inconnu");
    	typ = document.getElementById("xml_typ");
    	fab = document.getElementById("xml_fab");
    	liste_fam = document.forms.frm_produit2.chp_fam_sym;
    	liste_sym = document.forms.frm_produit2.chp_sym;
    	if (inconnu == 1)
    	{
    		lib1 = "Marque : ";
    		lib2 = "Modèle : ";
    		val1 = "<select name='chp_mar_mob' style='width:150px;' size='1' class='selectone_std' onFocus='chg_focus(this);' onBlur='chg_focus(this);' onchange='javascript:charge_symptome(this.value);' onclick='javascript:document.forms.frm_produit2.chp_mar.value=this.value';></select>";
    		val2 = "<select name='chp_mod_mob' style='width:150px;' size='1' class='selectone_std' onFocus='chg_focus(this);' onBlur='chg_focus(this);' onchange='javascript:document.forms.frm_produit2.chp_mod.value=this.value;'></select>";
    		AddRow("table_suppl","ligne1",lib1,val1);
    		AddRow("table_suppl","ligne2",lib2,val2);
    		charge_mob("marque");
    	}
    L� vous voyez qu'� la fin de cette fonction de callBack ajax, j'ajoute deux lignes <tr> (par la m�thode AddRow) ayant respectivement pour param�tres de fonction l'id du tableau, l'id de la ligne, le contenu de la cellule 1 (libell� du select), le contenu de la cellule 2 (le select). J'ajoute donc deux lignes, deux select au tableau.
    Ensuite j'appelle la fonction charge_mob("marque") qui va charger dans la premi�re liste cr��e, une liste de marques.

    fonction charge_mob() avec son callback:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    function charge_mob(typ)
    {
    	var XHR = new XHRConnection();
    	XHR.appendData("typ", typ);
    	XHR.sendAndLoad("xml/charge_mob.php", "GET", back_charge_mob);
    }
    function back_charge_mob(obj) 
    {
    	var liste_mar = document.forms.frm_produit2.chp_mar_mob;	
    	var t_num= obj.responseXML.getElementsByTagName('donnee');
    	if (t_num.length > 0)
    	{		
    		charge_aspect();
    		num= t_num[0];
    		var t_mar = obj.responseXML.getElementsByTagName('marque');
    		liste_mar.options.length = 0;
    		liste_mar.options[liste_mar.options.length] = new Option ("", "");
    		for (var i = 0; i < t_mar.length; i++)
    		{
    			marque = t_mar[i];
    			liste_mar.options[liste_mar.options.length] = new Option (marque.getAttribute("nom"), marque.getAttribute("id"));
    			if (marque.getAttribute("sel") == "O")
    				liste_mar.selectedIndex = liste_mar.options.length - 1;
    		}
    	}
    }
    L'ERREUR :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var liste_mar = document.forms.frm_produit2.chp_mar_mob;
    Me renvoie une erreur car chp_mar_mob (nom du select) n'est a priori pas accessible. Pourtant lorque je fais une selection manuelle sur firefox et que je regarde le code source, les deux select sont bien pr�sents et parfaitement configur�s. De plus j'utilise la mm formulation dans une autre appli et �a fonctionne.... -_-'

    JE NE PIGE PAS DU TOUT!!
    D'autant que �a marche sur une autre appli et par le mm syst�me!
    J'ai eu beau reprendre tout le code, c'est incompr�hensible.

    Merci de me trouver la ptite boulette, je sature de chercher...

  2. #2
    Membre �prouv� Avatar de speedev
    Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par d�faut
    Ca bloque tout mon projet! Personne peut jetter un oeil? Je s�r que l'erreur est b�te comme tout.

  3. #3
    Membre �prouv� Avatar de speedev
    Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par d�faut
    Oops je vous ai pas montr� ma m�thode addRow...important!
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function AddRow(idtable, id, val1,val2){
        var newRow = document.getElementById(idtable).insertRow(-1);
    	newRow.id = id;
     
    	newCell = newRow.insertCell(0);
    	newCell.id = id+"_cel1";
     
    	newCell.innerHTML = val1;
    	newCell.className = "td_mob_titre";
     
        newCell = newRow.insertCell(1);
    	newCell.id = id+"_cel2";
    	newCell.className = "td_saisie_lib";	
        newCell.innerHTML = val2;
     
    }
    Voil�, mais je ne pense pas que l'erreur vienne de l�.

    Je peux correctement appeler les �lements input etc... de mon formulaire sauf ceux que j'ai cr�� avec addRow, mais je vois bien ces derniers sur la page et dans le code source (par s�lection firefox). Strange...very strange....j'en peux plus je suis bloqu�!

  4. #4
    Membre �prouv� Avatar de speedev
    Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par d�faut
    Bon ben vous �tes pas motiv�s pour m'aider!

    J'ai laiss� b�ton, apparement, la m�thode newRow n'est pas tr�s flexible avec Ajax. J'ai vulgairement choisi la propri�t� CSS display comme paliatif...c'est suffisant...dommage....

    tchaw

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [1.x] Cr�ation d'un objet, form non valide et vide
    Par insane1 dans le forum Symfony
    R�ponses: 3
    Dernier message: 02/11/2010, 09h20
  2. [forms 10g] Rendre Bouton De Commande Non Accessible
    Par lolafrite dans le forum Forms
    R�ponses: 5
    Dernier message: 21/03/2007, 17h20
  3. Constructeur non accessible
    Par mathieu dans le forum C++
    R�ponses: 1
    Dernier message: 03/09/2006, 23h43
  4. [CR 9] Mise en forme non affich�e when null
    Par Yorglaa dans le forum Formules
    R�ponses: 2
    Dernier message: 28/06/2004, 17h27
  5. Capture d'une form non visible
    Par Linkin dans le forum Composants VCL
    R�ponses: 3
    Dernier message: 14/04/2004, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo