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 :

[DOM] Formulaire n'apparaît pas


Sujet :

JavaScript

  1. #1
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut [DOM] Formulaire n'apparaît pas
    je vous propose une maquette pour refléter la situation qui me cause soucis.

    L'appel à la fonction Ajax('f', 'status') devrait inserer dans la ligne du tableau (<tr id=f>) le formulaire avec innerHTML.
    Si les balises de formulaire sont commentées tout va bien, si elles sont décommentées le formulaire ne s'affiche plus.

    Quelque chose doit m'échapper . Merci d'avance.

    Voici la page qui appel le code Ajax
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <div id=status>Attente Ajax</div>
     
    <table border=1>
    	<tr id=f>
     
    	</tr>	
    	<tr>
    		<td><a href=# onclick="Ajax('f', 'status');">Affiche form</a></td>
    		<td>Ligne 2</td>
    	</tr>
     
    </table>
    Voici le code appelé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <!-- <form action="form.php" method="post"> -->
    <td class=tdnew>
    	<input type=submit value="Ok">
    </td>
    <td class=tdnew>
    	<input type=text name=mot>
    </td>
    <!-- </form> -->

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par riete Voir le message
    Quelque chose doit m'échapper .
    la modification (ou la création) d'un formulaire à l'aide d'innerHTML n'est pas possible. L'intégration/modification du form dans la structure du document ne se fait pas correctement.

    Il faut passer par les instructions DOM ....

    A+

  3. #3
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Merci, c'est bien ce que je craignais
    J'ai commencé à ma faire une batterie de function pour créer ligne, cellule en fonction de la position du click.

    Est ce que cela signifie que je suis obligé d'utiliser document.createElement('form') ?
    Puis pour créer chacun des éléments du formulaire dois je procéder la même façon (ce qui est très "verbeux").
    Ou puis je avoir recourt aux functions du style InsertInputText()...

    A+

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    j'ai proposé un petite librairie dans les contributions a cet effet ...

  5. #5
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    j'ai proposé un petite librairie dans les contributions a cet effet ...
    Peux tu m'aider à la trouver, j'ai l'impression de chercher une aiguille dans une botte de foin (ou alors je n'ai pas la bonne méthode).
    Je continue en parallèle ma formation à cette technique en même temps
    Merci

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1

  7. #7
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Merci pour le lien, mais je dois avouer qu'au stade ou j'en suis dans la compréhension du mécanisme, il vaut mieux que je procède étapes par étapes.
    Je décortique le code de l'exemple ce qui m'apprends beaucoup de choses, en particulier l'utilisation du/des HasH que je ne connaissais absolument pas.

    Au risque de me faire taper dessus je vais poser une question:
    Pourquoi ne pas utiliser une fonction de ce type dans laquelle tu intègre un switch(HasH) comme tu là fait. Il me semble que celle-ci a l'avantage de fonctionner sur IE et FF.
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <html>
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    	<title>deleteCell</title>
     
    	<script type="text/javascript" language="javascript" charset="iso-8859-1">
     
    		function add_obj(obj){
     
    			p = document.getElementById(obj);
     
    			p.innerHTML ='';
     
    			tnode = document.createTextNode('Radio1 ');
    			p.appendChild(tnode);
     
    			// try pour IE et catch pour FF
    			try{
    				new_Element = document.createElement('<input type="radio" name="myrad" checked />');
    			}catch(err){
    				new_Element = document.createElement('input');
    			}
     
    			new_Element.setAttribute('type','radio');
    			new_Element.setAttribute('name','myrad');
    			new_Element.id = 'rad1';
    			new_Element.setAttribute('checked','checked');
    			new_Element.value = '1';
     
    			p.appendChild(new_Element);
    		}
    	</script>
     
    </head>
     
    <body bgcolor="#CCCCCC">
    	<input type="button" value="build" onclick="add_obj('myp');">
    	<p id=myp></p>
    </body>
    </html>

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    justement le problème se pose pour le name que tu ne peux pas attribuer de façon crossbrowser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new_Element.setAttribute('name','myrad');
    d'ou la nécessité de distinguer deux syntaxes d'attribution du name comme expliqué dans l'article

  9. #9
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    justement le problème se pose pour le name que tu ne peux pas attribuer de façon crossbrowser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new_Element.setAttribute('name','myrad');
    d'ou la nécessité de distinguer deux syntaxes d'attribution du name comme expliqué dans l'article
    Je ne suis pas certain que nous nous soyons bien compris. Il me semble que le code que j'ai proposé apporte une réponse à cette question.

    Question subsidiaire: Pourquoi dans le code qui suit, les elements radio et text sont-ils inséré dans le body et non dans le formulaire comme demandé ?
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    <html>
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    	<title>Make form</title>
     
    </head>
     
    <body bgcolor="#CCCCCC">
    	<input type="button" value="add form" onclick="add_form('myp1');">
    	<input type="button" id=addradio value="add radio" disabled="true" onclick="add_radio('form1');">
    	<input type="button" id=addtext value="add text" disabled="true" onclick="add_text('form1');">
    	<p id=myp1></p>
    </body>
    <script type="text/javascript" language="javascript" charset="iso-8859-1">
    		// ----------------------
    		// Ajout form
    		// ----------------------
    		function add_form(obj){
     
    			p = document.getElementById(obj);
     
    			// try pour IE et catch pour FF
    			try{
    				new_Element = document.createElement('<form />');
    			}catch(err){
    				new_Element = document.createElement('form');
    			}
     
    			new_Element.setAttribute('method','post');
    			new_Element.setAttribute('action','');
    			new_Element.id = 'form1';
     
    			p.appendChild(new_Element);
     
    			// Activation de boutons
    			document.getElementById("addradio").disabled=false;
    			document.getElementById("addtext").disabled=false;
    		}
     
    		// ----------------------
    		// Ajout radio
    		// ----------------------
    		function add_radio(obj){
     
    			f = document.getElementById(obj);
     
    			tnode = document.createTextNode('Radio1 ');
    			f.appendChild(tnode);
     
    			// try pour IE et catch pour FF
    			try{
    				new_Element = document.createElement('<input type="radio" name="myrad" checked />');
    			}catch(err){
    				new_Element = document.createElement('input');
    			}
     
    			new_Element.setAttribute('type','radio');
    			new_Element.setAttribute('name','myrad');
    			new_Element.id = 'rad1';
    			new_Element.setAttribute('checked','checked');
    			new_Element.value = '1';
     
    			f.appendChild(new_Element);
    		}
     
    		// ----------------------
    		// Ajout Text
    		// ----------------------
    		function add_text(obj){
     
    			f = document.getElementById(obj);
     
    			tnode = document.createTextNode('MonTexte ');
    			f.appendChild(tnode);
     
    			// try pour IE et catch pour FF
    			try{
    				new_Element = document.createElement('<input type="text" name="mytext" />');
    			}catch(err){
    				new_Element = document.createElement('input');
    			}
     
    			new_Element.setAttribute('type','text');
    			new_Element.setAttribute('name','mytext');
    			new_Element.id = 'text1';
    			new_Element.value = 'Rien';
     
    			f.appendChild(new_Element);
    		}
    	</script>
    </html>

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    le switch est moins gourmand que le try catch mais c'est une autre façon de faire ...

  11. #11
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Le code ci-dessus fonctionne très bien.
    Il faut que j'arrête le rouge le matin, à moins que ce soit les 'Hash' qui aient un effet retard

    Question soldée merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. formulaire n'envoi pas le corps du message
    Par alexp dans le forum Langage
    Réponses: 16
    Dernier message: 25/06/2006, 16h51
  2. [Applet] qui n'apparaît pas.
    Par Vesperal dans le forum Applets
    Réponses: 2
    Dernier message: 09/06/2006, 16h28
  3. Enregistrer sous-formulaire meme si pas rempli
    Par mat75019 dans le forum Access
    Réponses: 3
    Dernier message: 22/04/2006, 08h32
  4. L'icône "retirer le périphérique.." n'apparaît pas
    Par al1_24 dans le forum Ordinateurs
    Réponses: 8
    Dernier message: 30/03/2006, 23h58
  5. Réponses: 5
    Dernier message: 12/12/2005, 08h52

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