begin process at 2012 05 29 07:21:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Javascript

 > 

Archives

 > 

AU SECOURS !!!

 > 

créer un formulaire dynamique


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

créer un formulaire dynamique

samedi 11 mars 2006 à 12:05:23 | créer un formulaire dynamique

pomgnon

bonjour,
j'avais besoin d'un formulaire dynamique où l'on pouvait ajouter ou suppirmer une zone de saisie en cliquant sur le bouton adéquat.
Etant très mauvais en javascript, j'ai adapté un code faisant à peu près la même chose à mon site.
Je me rend compte maintenant que je doit ajouter un autre element dans se formulaire, lui aussi interactif. J'ai essayé d'écrire le code mais je n'y arrive pas. Je demande donc votre aide.
tout d'abord voici le code (xhtml et js) que j'utilise pour l'instant.
xhtml
<p id="lesLiens">
     Type de lien: <select name="typeDeLien_1">
          <option value="normal">normal</option>
          <option value="externe">lien vers un autre site</option>
           <option value="index">lien vers la page d'accueil
</option>
      </select>
      <label> nom :<input type="text" name="nom_1" /></label>
      <input type="button" value="ajouter une zone de saisie" onClick="javascript:nouveau()" />
      <br />
</p>
javascript (je vous conseil de sauter ce code et d'y revenir si vous décidé de vous attaquer à mon probleme)
function supprimlien(event)
{
    //on sélectionne le bloc formulaire et on récupère tous les label qu'il y a à l'intérieur
    var bloc_liens = document.getElementById("lesLiens");
    var labels = bloc_liens.getElementsByTagName("label");
   
    //On récupère le noeud qui emmet l'évènement et sa position grâce au texte Valeur x
    var node_source = (document.all)?event.srcElement:event.target;
    var attribut = node_source.previousSibling.lastChild.getAttribute("name");
    var position = attribut.split("_")[1];
   
    //On décalle d'un cran inférieur tous les éléments situé après l'élément à supprimer
    for(var i=position;i<labels.length;i++)
    {
        var label = labels[i];
        var input = label.getElementsByTagName("input")[0];
        var liste = label.previousSibling;
       
        input.setAttribute("name","nomDuLien_"+i);
        liste.setAttribute("name","typeDeLien_"+i);
    }
   
    //Suppression de la zone de texte, du lien et du saut de ligne
    var label = labels[position-1];
    var liste = label.previousSibling;
    var texteliste = liste.previousSibling;
    var boutton = label.nextSibling;
    var br = boutton.nextSibling;
    bloc_liens.removeChild(label);
    bloc_liens.removeChild(boutton);
    bloc_liens.removeChild(br);
    bloc_liens.removeChild(liste);
    bloc_liens.removeChild(texteliste);
}

function nouveaulien()
{
    //On compte le nombre de label dans le fieldset "lesLiens"
    var bloc_liens = document.getElementById("lesLiens");
    var numero = bloc_liens.getElementsByTagName("label").length;
    numero ++;
   
    //création de la nouvelle ligne de formulaire
    //0)SELECT

    var liste = document.createElement("select");
    liste.setAttribute("name","typeDeLien_"+numero);
    var texteliste =  document.createTextNode("Type de lien: ");
    //option 1
    var option1 = document.createElement("option");
    option1.setAttribute("value","normal");
    var texteoption1 =  document.createTextNode("normal");
    option1.appendChild(texteoption1);
    //option 2
    var option2 = document.createElement("option");
    option2.setAttribute("value","externe");
    var texteoption2 =  document.createTextNode("lien vers un autre site");
    option2.appendChild(texteoption2);
    //option 3
    var option3 = document.createElement("option");
    option3.setAttribute("value","index");
    var texteoption3 =  document.createTextNode("lien vers la page d'accueil");
    option3.appendChild(texteoption3);
    //assemblage liste
    liste.appendChild(option1);
    liste.appendChild(option2);
    liste.appendChild(option3);//

   //
1) LABEL
    var label = document.createElement("label");
    var valeurLabel =  document.createTextNode(" nom du lien: ");
    var input = document.createElement("input");
    input.setAttribute("type","text");
    input.setAttribute("name","nomDuLien_"+numero);
    label.appendChild(valeurLabel);
    label.appendChild(input);
    //2) BOUTTONS (supprimer et ajouter)
    var bouttonSupprim = document.createElement("input");
    bouttonSupprim.setAttribute("type","button");
    bouttonSupprim.setAttribute("value","supprimer le lien");
   
    if(document.all) bouttonSupprim.attachEvent("onmouseup",supprimlien);
    else bouttonSupprim.addEventListener("mouseup",supprimlien,true);
   
    //3) <BR />
    var br = document.createElement("br");
   
    //4) mise en forme
    bloc_liens.appendChild(texteliste);
    bloc_liens.appendChild(liste);
    bloc_liens.appendChild(label);
    bloc_liens.appendChild(bouttonSupprim);
    bloc_liens.appendChild(br);
}

ce code fonctionne et pour que vous puissiez y voir plus clair voici une page ou se trouve ce petit formulaire: ici
J'aimerais que lorsque l'on selectionne sur la deuxieme option de la liste deroulante, une nouvelle zone de saisie apparaisse entre la liste deroulante et la premiere zone de saisie.
ce qui donnerais ce code:
<p id="lesLiens">
     Type de lien: <select name="typeDeLien_1">
          <option value="normal">normal</option>
          <option value="externe">lien vers un autre site</option>
           <option value="index">lien vers la page d'accueil
</option>
      </select>
     <label> url :<input type="text" name="url_1" /></label>
     
<label> nom :<input type="text" name="nom_1" /></label>
      <input type="button" value="ajouter une zone de saisie" onClick="javascript:nouveau()" />
      <br />
</p>

idéalement, losrque l'on enleverais le focus à la 2eme option , cette zone de saisie disparaitrais, mais ceci est facultatif.
le probleme est qu'il faut que cela fonctionne quelque soit le nombre de ligne qu'il y ait.
je pense avoir tout dit.
Je sais que je demande beaucoup mais si quelqu'un acceptait d'ecrire ce code je lui en serais très reconnaissant.
merci d'avance.

conseil: si vous décider de vous attaquer à ce probleme, vous aurez sans doute besoin de travailler sur le code que j'ai donné plus haut (a moin que vous decidiez de tout reécrire mais je ne pense pas que ce soit utile). pour faciliter la lecture de ce code je vous conseil d'en faire un copier coller dans votre editeur de texte preferé.


Cette discussion est classée dans : label, liens, var, document, bloc


Répondre à ce message

Sujets en rapport avec ce message

pb pour placer les sous-menus [ par annethe ] Bonjour,J'ai créé un menu dynamique. J'ai réussi à placer lemenu où je veux mais je n'arrive pas à bien placer lessous-menus.dans la page ou j'affiche Aide a decrypté [ par Wab ] bonjour, quelqu'un peux m'aider a decrypté ca? :function getCookieVal (offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == - aide pour un jv-sc qui test des champs [ par Moussetique ] function VerifForm() { adresse = document.krucial.email.value; motdp = document.krucial.mdp.value; var place = adresse.indexOf("@",1); var point = adr Appel de fonction via un évènement OnClick ? [ par bside8 ] Bonjour,tout commence par un formulaire PHP dans lequel mes utilisateurs doivent saisir une date.Dans le champ concerné se trouve un gestionnaire d'év OnChange=fonction() --> ne MARCHE pas !! [ par bside8 ] Bonjour,j'essaie de mettre au point un script permettant d'afficher un calendrier.J'affiche dans une fenêtre nommée Calendrier le calendrier du mois c forcer les frames [ par jchv ] je voudrais forcer les frames si on ouvre le site sur une autre page que celle d'accueil. j'ai essayé le script suivant : (le script ajouté va de "if" Changer le chemin d'accès d'un cookie [ par Angelucky ] Salut tout le monde !!!Je suis charger de refaire un site en JavaScript dans lequel j'utilise un cookie ! Mon problème est de pouvoir changer l'emplac mozilla et les sélections :( [ par randiox ] voila j'ai fait un petit code qui tourne sous IE :function smiley(code) { var chaine = document.selection.createRange().text; document.formulaire.te Diaporama Javascript [ par Dominike ] - Dominike -Bonjour à tous !Je vous soumet un petit problème que je n'arrive pas à résoudre seul.J'ai récupéré un Javascript sympa pour créer un diapo problème avec le login [ par TheRif ] J'ai un petit problème avec le login,au début ca marchait comme sur des roulette, mais quand j'ai essayé de testé d'aller vers une page qui était bloq


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 : 0,499 sec (4)

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