begin process at 2012 05 29 08:55:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Function & Méthodes

 > 

Génerer champs texte+fonction avec un bouton


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Génerer champs texte+fonction avec un bouton

mercredi 8 juillet 2009 à 16:12:22 | Génerer champs texte+fonction avec un bouton

lornea

Bonjour a tous.
Je vais essayé de vous expliquer mon problème. ^^

Alors voila, je veux avoir une page formulaire, avec des champs dépends les uns des autres.
Le principe est le remplissage d'une fiche de cours.
la page se compose en 3 parties:
1. Chapitre (avec un bouton + et - pour ajouter/enlever autant de chapitres que nécessaire)
2.Sous-Chapitre ( (avec un bouton + et - pour ajouter/enlever autant de Sous-chapitres que nécessaire (2. étant lié à 1))
3.Objectif du Chapitre (avec un textearea (3 dépends aussi de 1.)

Voila pour l'objectif a atteindre :)

j'ai réussi à créer une fonction pour générer le nombre de Chapitres/sous-chapitres voulu. (voici le code =>)

var c,c1, ch ;
 
function plus(){
c=document.getElementById('butaddmoins');
c1=c.getElementsByTagName('input');
ch=document.createElement('input');
 
ch.setAttribute('type','text');
ch.setAttribute('name','ch'+c1.length);
ch.setAttribute('value', 'Chapitre'+c1.length);
ch.setAttribute('style','margin-top:10px;');


c.appendChild(ch);
}
 
function moins(){
if(c1.length>0){c.removeChild(c1[c1.length-1])}
if(c1.length==0){document.getElementById('sup').style.display='none'};
}

de ce coté la, ca va

ce que je veux, c'est que au debut, il y'a sur la page Chapitre 0    |Sous-Chapitre 0    | Objectif chapitre 0
avec les boutons +/- et que lorsqu'on clique sur le bouton + du chapitre, on arrive a =>  Chapitre 1   | Sous-chapitre 1   |Objectifs chapitre 1
et ainsi de suite selon le nombre de Chapitre.

J'ai tenté avec CloneNode, mais ca ne m'as pas trop réussi...

J'ai également tenté de rajouter des variables dans la fonction plus() afin de tout générer.
J'arrive à faire les textearea, mais la fonction +/- pour les sous-chapitre, je n'arrive pas a la lancer... =(

ca me donne ca pour le script =>

var c,c1,ch,d,d1,dh,a,a1,ah;
 
function plus(){
c=document.getElementById('butaddmoins');
c1=c.getElementsByTagName('input');
ch=document.createElement('input');

d=document.getElementById('plaf');
d1=d.getElementsByTagName('textarea');
dh=document.createElement('textarea');

a=document.getElementById('B');
a1=a.getElementsByTagName('input');
ah=document.createElemen('input');
 
ch.setAttribute('type','text');
ch.setAttribute('name','ch'+c1.length);
ch.setAttribute('value', 'Chapitre'+c1.length);
ch.setAttribute('style','margin-top:10px;');

dh.setAttribute('name','dh'+d1.length);
dh.setAttribute('value', 'Objectif'+d1.length);
dh.setAttribute('rows','6');
dh.setAttribute('cols','28');

ah.setAttribute('type','text');
ah.setAttribute('name','ah'+a1.length);
ah.setAttribute('value', 'Sous_Chapitre'+a1.length);


c.appendChild(ch);
d.appendChild(dh);
a.appendChild(ah);

}

et ca pour le code html =>

<div>
  
            <div id="menu">       
                <div class="element_menu">
           
                    <h3>Plan du Cours</h3>
                                       
                        <div id="butaddmoins" style="margin-left:0px;width:180px"></div>

                            <p>
                                <input type="button" value="+" onclick="plus()" title="+" />
                                <input type="button" style="display:none" id="sup" value="-" onclick="moins()"  title="-"/>
                            </p>


                   
                </div>
            </div>
       

            <div id="plaf">
       
                <div style="display:none" id="obj1">
                    <p>
                        Objectifs Chapitre : <br /><br />
                        <textarea name="Objectif" rows="6" cols="28">Veuillez rentrer les Objectifs du cours.</textarea>
                    </p>
 
                </div>
            </div>
       
            <div id="plif">

                <div style="display:none" id="corps3">

                    Détails Chapitre : <br /><br />
                    <form id="frm1" action="">
                    <div id="B" style="margin-left:0px;width:200px"></div>
 
                        <p>
                            <input type="button" style="display:none" id="sup2" value="+" onclick="plus1()" title="+" />
                            <input type="button" style="display:none" id="sup1" value="-" onclick="moins1()" title="-" />
                        </p>
                    </form>

                </div>

       
       
            </div>
       
        </div>

Voila je crois que j'ai tout dis... ^^

Donc, si quelqu'un pouvait m'aider à résoudre mon problème (peut importe la méthode) ce serait magique =)
N'hésitez pas à poser des questions, si je n'ai pas été clair.

Merci d'avance :)
mercredi 8 juillet 2009 à 16:18:51 | Re : Génerer champs texte+fonction avec un bouton

Bul3

Membre Club


Bonjour,

1° éviter ( à mon avis ) les setAttribute
   ça ne fonctionne pas pareil avec tous les naviagateurs
   et ( pour moi )                   ch.name='ch'+c1.length;
   c'est bien plus simple que : ch.setAttribute('name','ch'+c1.length);
2° du coup, même pas vérifié ton script
    mais createElement + appendChild, ça baigne
    exemple ici ?
si tu n'y parviens pas : dis le.

Cordialement [mon Site] [M'écrire] Bul
mercredi 8 juillet 2009 à 16:25:24 | Re : Génerer champs texte+fonction avec un bouton

lornea

Pour les setAttribute, je savais pas qu'on pouvais raccourcir comme ca ^^"
donc ca marche pour tout les attributs ?
ch.type=
ch.name=
ch.value=
ch.style=

Sinon, si j'ai posté, c'est parce que mon script fonctionne pas ^^"
Et je ne vois pas pourquoi... ='(


PS: merci pour la rapidité
mercredi 8 juillet 2009 à 16:31:51 | Re : Génerer champs texte+fonction avec un bouton

Bul3

Membre Club
>>ca marche pour tout les attributs ?
oui
>>t je ne vois pas pourquoi
inutile que je regarde si c'est setAttribute
essaye sans et dis nous.

curieux d'ailleurs de mettre des name du style 'ch'+c1.length
met le même name
coté javascript tu utilises document.name_formulaire.name_champ[index]
coté serveur, tu reçois un array


mercredi 8 juillet 2009 à 16:52:01 | Re : Génerer champs texte+fonction avec un bouton

lornea

j'ai modifié les setAttribute, ce qui me donne ca =>
var c,c1,ch,d,d1,dh,a,a1,ah;
 
function plus(){
c=document.getElementById('butaddmoins');
c1=c.getElementsByTagName('input');
ch=document.createElement('input');

d=document.getElementById('plaf');
d1=d.getElementsByTagName('textarea');
dh=document.createElement('textarea');

a=document.getElementById('B');
a1=a.getElementsByTagName('input');
ah=document.createElemen('input');
 
ch.type='text';
ch.name='ch'+c1.length;
ch.value='Chapitre'+c1.length;
ch.style'margin-top:10px;';

dh.name='dh'+d1.length;
dh.value='Objectif'+d1.length;
dh.rows='6';
dh.cols='28';

ah.type='text';
ah.name='ah'+a1.length;
ah.value='Sous_Chapitre'+a1.length;


c.appendChild(ch);
d.appendChild(dh);
a.appendChild(ah);

}

et bah,.. ca marche toujours pas... ='(

sinon le name='ch'+c1.length; c'est pour qu'il y'a pas plusieurs fois le même name. (il me semble que c'est mieux)

j'ai pas trop compris ce que tu voulais dire avec tes 2 coté, tu peut reformuler ? ^^
jeudi 9 juillet 2009 à 08:53:28 | Re : Génerer champs texte+fonction avec un bouton

Bul3

Membre Club


des erreurs de syntaxe....
en ne laissant que la création d'un seul champ    ( tu compléteras )

<body>
 <script>
  function plus()
  {  var c=document.getElementById('butaddmoins');
     var c1=c.getElementsByTagName('input');
     var ch=document.createElement('input');
     ch.type='text';
     ch.name='ch'+c1.length;
     ch.value='Chapitre'+c1.length;
     ch.style.marginTop='10px;';
     c.appendChild(ch);
 }
 </script>
 <div id="butaddmoins" style="margin-left:0px;width:180px"></div>
 <input type="button" value="+" onclick="plus();" />
</body>


>tu peut reformuler ? ^^
oui, surtout que je m'a gouré !
je suppose que ce formulaire va être transmis...
plutôt que de gérer des name différents, met le même,
c'est plus simple à gérer

il vaut mieux gérer document.formulaire.champ[index] que
document.formulaire.champ1,  document.formulaire.champ2...document.formulaire.champn
( il me semble )

et si tu envoie ce formulaire vers le serveur, met un name avec des []
du style name="toto[]"
en javascript tu pourras gérer document.formulaire["toto[]"][index]
et coté serveur ( php par exemple ) $_POST['toto'] est un array

voili, voilou
vendredi 10 juillet 2009 à 09:25:07 | Re : Génerer champs texte+fonction avec un bouton

lornea

Merci pour toutes ces réponses.

Malheureusement, je n'aurais pas le code sous les yeux avant mercredi. =/
Je peut te demander de patienter jusque la ? pour pouvoir me renseigner si il subsiste encore des erreurs...

A bientôt :)
vendredi 10 juillet 2009 à 09:35:10 | Re : Génerer champs texte+fonction avec un bouton

Bul3

Membre Club
si tout va bien je serais encore là.
@+

mercredi 15 juillet 2009 à 09:15:28 | Re : Génerer champs texte+fonction avec un bouton

lornea

Désolé pour l'attente...

Alors, voila, j'ai rajouté tout les var,... cependant, rien n'a changé.... =/

voici mon code =>

 <script type="text/javascript">
 
var c,c1,ch,d,d1,dh,a,a1,ah;
 
function plus(){
var c=document.getElementById('butaddmoins');
var c1=c.getElementsByTagName('input');
var ch=document.createElement('input');

var d=document.getElementById('plaf');
var d1=d.getElementsByTagName('textarea');
var dh=document.createElement('textarea');

var a=document.getElementById('B');
var a1=a.getElementsByTagName('input');
var ah=document.createElemen('input');
 
ch.type='text';
ch.name='ch'+c1.length;
ch.value='Chapitre'+c1.length;
ch.style.margin-top='10px;';

dh.name='dh'+d1.length;
dh.value='Objectif'+d1.length;
dh.rows='6';
dh.cols='28';

ah.type='text';
ah.name='ah'+a1.length;
ah.value='Sous_Chapitre'+a1.length;


c.appendChild(ch);
d.appendChild(dh);
a.appendChild(ah);

}
 
function moins(){
if(c1.length>0){c.removeChild(c1[c1.length-1])}
if(c1.length==0){document.getElementById('sup').style.display='none'};
if(c1.length==0){document.getElementById('corps3').style.display='none'};
if(c1.length==0){document.getElementById('sup2').style.display='none'};
if(c1.length==0){document.getElementById('obj1').style.display='none'};
}

var c2,c3, ch1;
 
function plus1(){
var c2=document.getElementById('B');
var c3=c2.getElementsByTagName('input');
var ch1=document.createElement('input');
 
ch1.type='text';
ch1.name='ch'+c3.length;
ch1.value='SousChapitres'+c3.length;
ch1.style='margin-top:10px;';
c2.appendChild(ch1);
 
document.getElementById('sup1').style.display='inline';
}
 
function moins1(){
if(c3.length>0){c2.removeChild(c3[c3.length-1])}
if(c3.length==0){document.getElementById('sup1').style.display='none'};
}
 
</script>

si tu as besoin du body aussi, dit le moi.
Ça m'énerve car je ne vois toujours pas pourquoi ca marche pas... ><

sinon, dans ta correction, je vois "<input type="button" value="+" onclick="plus();" />"   je ne l'ai pas mit, mais il me semble qu'il n'y a pas de ; après les () pour appeler une fonction...

Si tu pouvais m'aider encore un peu ce serait génial :)
Merci
mercredi 15 juillet 2009 à 11:01:03 | Re : Génerer champs texte+fonction avec un bouton

Bul3

Membre Club
indispensable :
NavigateursQuelques Explications
Chrome
contrôler page actuelle / Options pour développeurs
/ Console Javascript
FireFox
Outils / Console d'erreurs
et mieux : télécharger FireBug
Internet
Explorer
activer le deboggage : Outils/options Internet/Avancés
dans la liste, sous "Navigation" : décocher
o Afficher une notification de chaque erreur de script
o Désactiver le débogage de Scripts (Internet Explorer)
et mieux (pour IE < 8) : télécharger le Debogger IE
voir aussi : DebugBar et Companion JS
K-Meleon
Outils / Console d'erreurs
Opera
Outils / Avancé / Console d'erreurs
Safari
Debug / Show JavaScript Console
° modifier Fichier com.apple.Safari.plist situé dans le
répertoire : Support:\Documents and Settings\utilisateur
\Application Data\Apple Computer\Safari\Preferences\
y ajouter <key>IncludeDebugMenu</key>
<true/>

et déjà, avec FireFox, par exemple on voit :
Erreur : invalid assignment left-hand side....
Code Source :
ch.style.margin-top='10px;';
ça ne plait pas !
ch.style.marginTop='10px;';

sans préjuger du reste


1 2 3

Cette discussion est classée dans : document, c1, length, setattribute, dh


Répondre à ce message

Sujets en rapport avec ce message

je comprend pas ?! [ par stequer ] voilas je suis nul en javascript pourier vous m'aider voila mon erreurError: document.getElementById("civilite") has no propertiesSource File: http:// taille d'un input select sous Netscape [ par stefdem ] Bonjour,Dans ma page j'ai 2 select.Le premier conditionne l'affichage du deuxième.Cela fonctionne mais sous Netscape, l'apparence de ce deuxième selec Problème appel fonction avec window.opener [ par Rouxy0076 ] Salut à tous,J'ai ma page appelante avec un select que je veux remplir grace à un autre select qui se trouve dans une popup que j'appelle avec ma page [xhtml] Intégration de fonctions javascript [ par kanabitch ] bonjour je cherche a corriger l'erreur que le navigateur me trouve lorsque que j'essai d'integrer une fonction javascript. Je vous montre le code car changer une url..... [ par engelho ] Bonjour,Je débute tout juste, et déjà, je ne sais plus ou mettre mes fonctions....J'ai créé un tableau a deux dimensions, comprenant des noms de pages PB script agregateur de feed rss [ par komar_666 ] Bonjour, j'ai un ptit probleme avec un script agregateur de feed rss dans un fichier html.Tout marche bien en local, par contre en ligne cela ne march récuperer la valeur d'une zone de texte [ par lsprax83 ] bonsoir tout le mondebon voila mon petit script : function generer(ou){    var Inp;       //ajout d'une zone de texte         Inp=doc Manipulation DOM dans un IFRAME impossible [ par djdave37 ] Bonjour, j'ai résolu mon problème à sa plus simple expression. J'ai besoin de connaître le contenu d'un formulaire avec que le submit ne soit réalis Ajout de champs dynamiquement [ par Julien237 ] Bonjour,Je fais très peu de javascript, je viens d'en écrire un permettant d'ajouter dynamiquement des champs à un formulaire qui marche très bien sou Problème avec un bouton Submit sous forme d'image [ par titoursdu38 ] Bonjour à tous !Je suis en train de travailler sur un formulaire, et je ne parviens pas à envoyer mon formulaire après le clic sur l'image.J'utilise u


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 8,518 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales