11486 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai un code de ce type là:
<DIV id="dropzone">
    <form id="form2" action=routeQuiRenvoieALaFonctionPourCréerFiche method="Post">
//une partie de mon formulaire qui permet d'entrer les infos de la fiche
    </form>
    <form id="form1" action=routeQuiRenvoieALaFonctionPourCréerFiche enctype="multipart/form-data" method="POST" class="dropzone dz-clickable">
    <div  >
        <div class="dz-default dz-message" aria-placeholder="">
            <span>Drop files here to upload</span>
            <input type="file" multiple="multiple" class="dz-hidden-input" style="visibility: hidden; position: absolute; top: 0; left: 0; height: 0; width: 0;">
    
        </div>
    </div>
</form>
   <form id="form3" action=routeQuiRenvoieALaFonctionPourCréerFiche method="Post">
//une partie de mon formulaire qui permet d'entrer les infos de la fiche
    </form>
  <form id="form4" action=routeQuiRenvoieALaFonctionPourCréerFiche enctype="multipart/form-data" method="POST" class="dropzone dz-clickable">
    <div  >
        <div class="dz-default dz-message" aria-placeholder="">
            <span>Drop files here to upload</span>
            <input type="file" multiple="multiple" class="dz-hidden-input" style="visibility: hidden; position: absolute; top: 0; left: 0; height: 0; width: 0;">
    
        </div>
    </div>
</form>
  </DIV>
 <button  name="creationFiche" id="valider1" form="form2" class="btn btn-success" onclick="submitForms();">Valider</button>


Avec un js comme ceci:
function submitForms(){
  
            document.getElementById("form2").submit();
            document.getElementById("form3").submit();
}

En fait j'ai 4 form en tout (dont 2 dropzone) car j'ai besoin de 2 dropzone à 2 endroits différents.

En gros sur mon formulaire j'ai 3 "pages" qui sont des div que je montre ou que je cache en fonction de quand l'utilisateur appuie sur suivant ou précédent. Ma première "page" concerne les infos de la fiche de non conformité, la deuxieme les infos de cette non conformité où l'utilisateur peut ajouter une photo, et la dernière la mise en conformité ou l'utilisateur peut ajouter une photo également. Lors de l'ajout de la photos à l'api il y a une paramètre que je mets à true si la photo concerne à mise en en conformité et false si elle concerne la non conformité. C'est pourquoi j'ai besoin de deux dropzeons différentes où je réussi à différencier les photos que je récupère de l'un ou de l'autre.

Avec ma fonction js, ce que je veux faire c'est soumettre les 2 form et les envoyer dans ma fonction php.

Cependant, même si je récupère bien les infos de form2, je ne récupère pas les infos de form3 même si je les remplis. Je ne comprends pas pourquoi. Quelqu'un pourrait-il m'aider ?

Merci !

Pour ceux qui veulent voici le code en entier avec mes fonctions js, il est assez long et étant donné je suis débutante ne doit pas être très beau pour quelqu'un de plus experimenté... :
<script src="https://rawgit.com/enyo/dropzone/master/dist/dropzone.js"></script>
<link rel="stylesheet" href="{{asset('dropZone.css')}}">
<link rel="stylesheet" href="{{asset('testFNCdropzone.css')}}" />
<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
  
  
<meta charset="utf-8">
  
  
<div id="page">
    <div id="corps">
        <aside>
            <div id="logoBlanc">
                <p>
                    <img src= "{{asset('imagesProjet/logo_blanc.png')}}"  alt=" " />
                </p>
            </div>
            <div id="nomUtilisateurCO">
                Admin
            </div>
            <div id="bouttons">
                <div id="creationFicheNC">
                    <div id="icons">
                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0,0H24V24H0Z" fill="none"/><path d="M7,15h7v2H7Zm0-4H17v2H7ZM7,7H17V9H7ZM19,3H14.82A2.988,2.988,0,0,0,9.18,3H5a1.752,1.752,0,0,0-.4.04A2.021,2.021,0,0,0,3.16,4.23,1.926,1.926,0,0,0,3,5V19a2.052,2.052,0,0,0,.16.78,2.119,2.119,0,0,0,.43.64,2.008,2.008,0,0,0,1.01.55A2.6,2.6,0,0,0,5,21H19a2.006,2.006,0,0,0,2-2V5A2.006,2.006,0,0,0,19,3Zm-7-.25a.75.75,0,1,1-.75.75A.755.755,0,0,1,12,2.75ZM19,19H5V5H19Z" fill="#b4b4b4"/></svg>
                    </div>
                    <div id="texte">
                        <a href="{{path('ficheNC')}}">Créer une fiche de non-conformité</a><br/><br/><br/>
                    </div>
                </div>
                <div id="consulterFicheNC">
                    <div id="icons">
                        <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><defs><clipPath id="a"><rect width="24" height="24" fill="none"/></clipPath></defs><g clip-path="url(#a)"><rect width="24" height="24" fill="none"/><path d="M107,17.3a9.624,9.624,0,0,1-8.8-5.5A9.732,9.732,0,0,1,107,6.3a9.624,9.624,0,0,1,8.8,5.5A9.624,9.624,0,0,1,107,17.3Zm0-13a11.782,11.782,0,0,0-11,7.5,11.817,11.817,0,0,0,22,0A11.782,11.782,0,0,0,107,4.3Zm0,10a2.5,2.5,0,1,1,2.5-2.5A2.476,2.476,0,0,1,107,14.3Zm0-7a4.5,4.5,0,1,0,4.5,4.5A4.481,4.481,0,0,0,107,7.3Z" transform="translate(-95 1)" fill="#b4b4b4"/></g></svg>
                    </div>
                    <div id="texte">
                        <a href="{{path('listeFicheNC')}}">Consulter les fiches de non-conformité</a><br/><br/><br/>
                    </div>
                </div>
                <div id="demandeSupp">
                    <div id="icons">
                        <svg xmlns="http://www.w3.org/2000/svg" width="21.5" height="21.5" viewBox="0 0 21.5 21.5"><path d="M13.321,3.876,22.33,21.832H4.311L13.321,3.876Zm0-1.948a1.554,1.554,0,0,0-1.278.937L2.866,21.155c-.7,1.25-.1,2.273,1.329,2.273H22.447c1.434,0,2.032-1.023,1.329-2.273h0L14.6,2.865a1.554,1.554,0,0,0-1.278-.937ZM14.664,19.4a1.344,1.344,0,1,1-1.344-1.344A1.344,1.344,0,0,1,14.664,19.4Zm-1.344-2.687a1.344,1.344,0,0,1-1.344-1.344V11.334a1.344,1.344,0,1,1,2.687,0v4.031A1.344,1.344,0,0,1,13.321,16.709Z" transform="translate(-2.571 -1.928)" fill="#b4b4b4"/></svg>
                    </div>
                    <div id="texte">
                        <a href="{{path('listeDemandeSuppression')}}">Demande de suppression</a><br/><br/><br/>
                    </div>
                </div>
                <div id="modiOrigines">
                    <div id="icons">
                        <svg xmlns="http://www.w3.org/2000/svg" width="19.301" height="19.301" viewBox="0 0 19.301 19.301"><path d="M12.221,1.928a9.65,9.65,0,1,0,9.65,9.65,9.65,9.65,0,0,0-9.65-9.65Zm0,18.094a8.416,8.416,0,0,1-3.34-.687l4.394-4.944a.6.6,0,0,0,.152-.4V12.181a.6.6,0,0,0-.6-.6c-2.13,0-4.377-2.214-4.4-2.236A.6.6,0,0,0,8,9.166H5.586a.6.6,0,0,0-.6.6v3.619a.6.6,0,0,0,.333.539L7.4,14.967v3.541A8.449,8.449,0,0,1,4.59,7.959h2.2a.6.6,0,0,0,.426-.177L9.632,5.37a.6.6,0,0,0,.177-.426V3.485a8.468,8.468,0,0,1,6.112.5c-.078.066-.154.135-.227.208a3.619,3.619,0,0,0,2.556,6.178q.09,0,.179,0a14.164,14.164,0,0,1-.158,7.018.6.6,0,0,0-.016.1,8.418,8.418,0,0,1-6.034,2.538Z" transform="translate(-2.571 -1.928)" fill="#b4b4b4"/></svg>
                    </div>
                    <div id="texte">
                        <a href="{{path('ajoutSousOrigine')}}">Modification des origines</a><br/><br/><br/>
                    </div>
                </div>
                <div id="bouttonProfil">
                    <div id="icons">
                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect width="24" height="24" fill="none"/><path d="M10,9a1.5,1.5,0,1,1,1.5-1.5A1.538,1.538,0,0,1,10,9Zm0-5A3.543,3.543,0,0,0,6.5,7.5a3.5,3.5,0,0,0,7,0A3.543,3.543,0,0,0,10,4Zm6.4,10.8c-1.4-1.7-4.9-2.3-6.4-2.3s-4.9.6-6.4,2.3A7.913,7.913,0,0,1,2,10a8,8,0,0,1,16,0A7.913,7.913,0,0,1,16.4,14.8ZM5.1,16.3c.4-.9,3-1.8,4.9-1.8s4.5.9,4.9,1.8A7.481,7.481,0,0,1,10,18,7.481,7.481,0,0,1,5.1,16.3ZM10,0A10,10,0,1,0,20,10,10.029,10.029,0,0,0,10,0Z" transform="translate(2 2)" fill="#b4b4b4"/></svg>
                    </div>
                    <div id="texte">
                        <a href="{{path('monProfil')}}">Profil</a><br/><br/><br/>
                    </div>
                </div>
                <div id="utilisateurs">
                    <div id="icons">
                        <svg xmlns="http://www.w3.org/2000/svg" width="19.508" height="19.508" viewBox="0 0 19.508 19.508"><g transform="translate(-27 -573)"><g transform="translate(27 573)" fill="rgba(255,255,255,0)"><path d="M 9.753781318664551 18.50750350952148 C 4.926931381225586 18.50750350952148 1.000001311302185 14.5805835723877 1.000001311302185 9.753753662109375 C 1.000001311302185 4.926923751831055 4.926931381225586 1.000003695487976 9.753781318664551 1.000003695487976 C 14.58063125610352 1.000003695487976 18.50756072998047 4.926923751831055 18.50756072998047 9.753753662109375 C 18.50756072998047 14.5805835723877 14.58063125610352 18.50750350952148 9.753781318664551 18.50750350952148 Z" stroke="none"/><path d="M 9.753781318664551 2.000003814697266 C 5.478331565856934 2.000003814697266 2.000001907348633 5.478323936462402 2.000001907348633 9.753753662109375 C 2.000001907348633 14.02918434143066 5.478331565856934 17.50750350952148 9.753781318664551 17.50750350952148 C 14.02923202514648 17.50750350952148 17.50756072998047 14.02918434143066 17.50756072998047 9.753753662109375 C 17.50756072998047 5.478323936462402 14.02923202514648 2.000003814697266 9.753781318664551 2.000003814697266 M 9.753781318664551 3.814697265625e-06 C 15.14064121246338 3.814697265625e-06 19.50756072998047 4.366903305053711 19.50756072998047 9.753753662109375 C 19.50756072998047 15.14060401916504 15.14064121246338 19.50750350952148 9.753781318664551 19.50750350952148 C 4.366921424865723 19.50750350952148 1.9073486328125e-06 15.14060401916504 1.9073486328125e-06 9.753753662109375 C 1.9073486328125e-06 4.366903305053711 4.366921424865723 3.814697265625e-06 9.753781318664551 3.814697265625e-06 Z" stroke="none" fill="#b4b4b4"/></g><g transform="translate(30.863 577.906)"><path d="M10.323,25.809v-1.1A2.206,2.206,0,0,0,8.117,22.5H3.706A2.206,2.206,0,0,0,1.5,24.706v1.1" transform="translate(-1.5 -15.883)" fill="none" stroke="#b4b4b4" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/><path d="M11.911,6.706A2.206,2.206,0,1,1,9.706,4.5,2.206,2.206,0,0,1,11.911,6.706Z" transform="translate(-5.294 -4.5)" fill="none" stroke="#b4b4b4" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/><path d="M31.654,25.932v-1.1A2.206,2.206,0,0,0,30,22.7" transform="translate(-19.523 -16.006)" fill="none" stroke="#b4b4b4" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/><path d="M24,4.695a2.206,2.206,0,0,1,0,4.273" transform="translate(-15.729 -4.623)" fill="none" stroke="#b4b4b4" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/></g></g></svg>
                    </div>
                    <div id="texte">
                        <a href="{{path('listeUsers')}}">Voir la liste des utilisateurs</a><br/><br/><br/>
                    </div>
                </div>
                <div id="deconnexion">
                    <div id="icons">
                        <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><defs><clipPath id="a"><rect width="24" height="24" fill="none"/></clipPath></defs><g clip-path="url(#a)"><rect width="24" height="24" fill="none"/><path d="M155.889-9.524l-1.413,1.413L150.889-11.7,147.3-8.111l-1.413-1.413,3.588-3.588L145.889-16.7l1.413-1.413,3.587,3.588,3.587-3.588,1.413,1.413L152.3-13.111Zm-5-13.588a10,10,0,0,0-10,10,10,10,0,0,0,10,10,10,10,0,0,0,10-10,10,10,0,0,0-10-10Z" transform="translate(-138.889 25.111)" fill="#b4b4b4" fill-rule="evenodd"/></g></svg>
                    </div>
                    <div id="texte">
                        <a href="{{path('logout')}}">Déconnexion</a><br/>
                    </div>
                </div>
            </div>
        </aside>
    </div>
  
  
    <div id="ficheNC">
    <DIV id="dropzone">
        <form id="form2" method="POST" action="{{path('ficheNC')}}">
            <div id="page1">
                <div id="enTete">
                    <div id="premier">
                        <div id="rondNumeroFonce"> <div id="numero">1</div></div>
                        <div id="texteFonce">Description</div>
                    </div>
                    <div id="videClair"></div>
  
                    <div id="deuxieme">
                        <div id="rondNumeroClair"> <div id="numero">2</div></div>
                        <div id="texteClair">Type</div>
                    </div>
                    <div id="videClair"></div>
                    <div id="troisieme">
                        <div id="rondNumeroClair"> <div id="numero">3</div></div>
                        <div id="texteClair">Conformité</div>
                    </div>
                </div>
                <div id="infospage1">
                    <div id="colonne1">
  
                        <div id="infoNC">
                            <label for="titre">Titre* </label> <br/> <input type="text" name="titre" id="titre" placeholder="Titre de la non conformité" required/>
                        </div>
  
                        <div id="infosUser">
                            <div id="textInfosUser">
                                <div id="textEmetteur">Emetteur</div>
                                <div id="textDate">Date</div>
                            </div>
  
  
                            <div id="valeurInfosUser">
                                <div id="valeurEmetteur">{{user.utilisateur.nom}} {{user.utilisateur.prenom}}</div>
                                <div id="valeurDate">{{date}} </div>
                            </div>
                        </div>
  
                        <div id="infoNC">
                            <label for="objet">Objet </label> <br/> <input type="text" name="objet" id="objet" placeholder="Type d'objet présentant un défaut"/>
                        </div>
  
                        <div id="infoNC">
                            <label for="repere">Repère </label> <br/> <input type="text" name="repere" id="repere" placeholder="Repère de la pièce"/>
                        </div>
  
                    </div>
  
                    <div id="colonne2">
                        <div id="infoNC">
                            <label for="nomAffaire">Nom de l'affaire* </label> <br/> <input type="text" name="nomAffaire" id="nomAffaire" placeholder="Affaire" required/>
                        </div>
  
                        <div id="infoNC">
                            <label for="numeroAffaire">Numéro de l'affaire* </label> <br/> <input type="text" name="numeroAffaire" id="numeroAffaire" placeholder="n°123456" required/>
                        </div>
  
                        <div id="infoNC">
                            <label for="colis">Numéro du colis </label> <br/> <input type="text" name="colis" id="colis" placeholder="Numéro de colis"/>
                        </div>
  
                        <div id="infoNC">
                            <label for="quantite">Quantité </label> <br/> <input type="text" name="quantite" id="quantite" placeholder="Nombre de pièces présentant le défaut"/>
                        </div>
  
                    </div>
                </div>
  
  
                <input type="button" id="suivantPage1" value="Suivant" onclick="openPage2();"/>
  
            </div>
  
            <div id="page2">
                <div id="enTete">
                    <div id="premier">
                        <div id="rondNumeroFonce"> <div id="check"><svg xmlns="http://www.w3.org/2000/svg" width="43.974" height="43.974" viewBox="0 0 43.974 43.974"><path d="M33.077,14.246l-1.86-1.913a.4.4,0,0,0-.3-.127h0a.384.384,0,0,0-.3.127l-12.9,12.991-4.693-4.693a.409.409,0,0,0-.592,0l-1.882,1.882a.421.421,0,0,0,0,.6l5.92,5.92a1.872,1.872,0,0,0,1.237.6,1.962,1.962,0,0,0,1.226-.581h.011L33.087,14.849A.452.452,0,0,0,33.077,14.246Z" transform="translate(0.178 1.07)" fill="#fff"/></svg></div></div>
                        <div id="texteFonce">Description</div>
                    </div>
                    <div id="videFonce"></div>
  
                    <div id="deuxieme">
                        <div id="rondNumeroFonce"> <div id="numero">2</div></div>
                        <div id="texteFonce">Type</div>
                    </div>
                    <div id="videClair"></div>
                    <div id="troisieme">
                        <div id="rondNumeroClair"> <div id="numero">3</div></div>
                        <div id="texteClair">Conformité</div>
                    </div>
                </div>
  
                <div id="Origines">
                    <div id="OriginesText">Origines*</div>
  
                    <div id="listeOrigines">
                        <div id="aligneHorizontalement">
                            {% for origine, listeOrigine in parsee %}
                                <div id="Origine">
                                    <input type="radio" name="origine" value="{{origine}}" id="{{origine}}" onclick="openListeSousOrigines('{{origine}}')" required/> <label for="{{origine}}">{{origine}}</label>
                                </div>
                            {% endfor %}
                        </div>
                    </div>
  
                </div>
                <div id="listeSousOrigines"></div>
                <script>
                    "use strict";
                    const listeOrigines = document.getElementById('listeOrigines');
                    const listeSousOrigines = document.getElementById('listeSousOrigines');
                    listeOrigines.style.display = 'block';
                    listeSousOrigines.style.display = 'none';
                    function openListeSousOrigines( origine )
                    {
                        listeSousOrigines.style.display = 'block';
  
                        switch(origine)
                        {
                                {% for origine, listeOrigine in parsee %}
                            case '{{origine}}':
                                listeSousOrigines.innerHTML="<div id=\"SousOrigines\">" +
                                    " <div id=\"SousOriginesText\">Sous origines*</div>" +
                                    "<div id=\"listeSousOrigines\">" +
                                    "<div id=\"aligneHorizontalement\">" +
                                    "               {% for sousOrigine in listeOrigine %}\n" +
                                    "          <div id=\"SousOrigine\">      <input type=\"radio\" name=\"sousOrigine\" value=\"{{ sousOrigine }}\" id=\"{{ sousOrigine }}\" /> <label for=\"{{ sousOrigine }}\">{{ sousOrigine }}</label> </div>\n" +
                                    "                {% endfor %} <div/><div/><div/>";
                                break;
                                {% endfor %}
  
                            // default:
                            //   listeSousOrigines.innerText="rien n'est selectionné"
                        }
  
                    }
  
                </script>
  
                <div id="infosNonConformite">
                    <div id="nonConformiteText">
                        Type de non-conformité*: <br/>
                    </div>
                    <div id="optionsNonConformite">
                        <div id="nonConformite">
                            <input type="radio" name="categorie" value="PourInfo" id="PourInfo" /> <label for="PourInfo">Pour information</label>
                        </div>
                        <div id="nonConformite">
                            <input type="radio" name="categorie" value="Mineure" id="Mineure" /> <label for="Mineure">Mineure</label>
                        </div>
                        <div id="nonConformite">
                            <input type="radio" name="categorie" value="Majeure" id="Majeure" /> <label for="Majeure">Majeure</label><br /> <br/>
                        </div>
                    </div>
                </div>
                <br/>
                <div id="choixResponsable">
                    <div id="choixReponsableText">Pour choisir un utilisateur qui validera la fiche : </div>
  
                    <label for="userVV">
                        <select name="userVV" id="userVV"> <!--utiliser le name pour récup la valeur avec request-->
                            <option value="vide">Pour validation</option> <!--la valeur est la value du option-->
                            {% for utilisateur in listeUser2et3%}
                                {%if user.utilisateur.id!=utilisateur.id%}
                                    <option value="{{utilisateur.id}}">{{utilisateur.nom|upper}} {{utilisateur.prenom}}</option>
                                {% endif %}
                            {% endfor %}
                        </select>
  
                    </label>
  
                </div>
  
                <div id="choixPourInfoText">
                    Pour choisir un (ou plusieurs) utilisateur(s) qui recevra la fiche par mail :
                </div>
                <div id="choixUser">
                    <p>
                        {% for utilisateur in listeUser%}
                            {%if user.utilisateur.id!=utilisateur.id%}
                                <label for="user-{{utilisateur.id}}">
                                    <input type="checkbox" id="user-{{utilisateur.id}}" name="listeUser1[]" value="{{utilisateur.id}}">
                                    {{utilisateur.nom|upper}} {{utilisateur.prenom}}
  
                                </label>
                                <br/>
                            {% endif %}
                        {% endfor %}
                    </p>
                </div>
                <label for="descriptionNC"></label> <textarea name="descriptionNC" id="descriptionNC" placeholder="Description de la non conformité" required></textarea>
  
  
            </div>
        </form>
        <form id="form1" action="{{path('ficheNC')}}" enctype="multipart/form-data" method="POST" class="dropzone dz-clickable">
        </form>
        <form id="form3" method="POST" action="{{path('ficheNC')}}">
  
            <input type="button" id="precedentPage2" value="Précédent" onclick="openPage1();"/>
            <input type="button" id="suivantPage2" value="Suivant" onclick="openPage3();"/>
            <div id="page3">
                <div id="enTete">
                    <div id="premier">
                        <div id="rondNumeroFonce"> <div id="check"><svg xmlns="http://www.w3.org/2000/svg" width="43.974" height="43.974" viewBox="0 0 43.974 43.974"><path d="M33.077,14.246l-1.86-1.913a.4.4,0,0,0-.3-.127h0a.384.384,0,0,0-.3.127l-12.9,12.991-4.693-4.693a.409.409,0,0,0-.592,0l-1.882,1.882a.421.421,0,0,0,0,.6l5.92,5.92a1.872,1.872,0,0,0,1.237.6,1.962,1.962,0,0,0,1.226-.581h.011L33.087,14.849A.452.452,0,0,0,33.077,14.246Z" transform="translate(0.178 1.07)" fill="#fff"/></svg></div></div>
                        <div id="texteFonce">Description</div>
                    </div>
                    <div id="videFonce"></div>
  
                    <div id="deuxieme">
                        <div id="rondNumeroFonce"> <div id="check"><svg xmlns="http://www.w3.org/2000/svg" width="43.974" height="43.974" viewBox="0 0 43.974 43.974"><path d="M33.077,14.246l-1.86-1.913a.4.4,0,0,0-.3-.127h0a.384.384,0,0,0-.3.127l-12.9,12.991-4.693-4.693a.409.409,0,0,0-.592,0l-1.882,1.882a.421.421,0,0,0,0,.6l5.92,5.92a1.872,1.872,0,0,0,1.237.6,1.962,1.962,0,0,0,1.226-.581h.011L33.087,14.849A.452.452,0,0,0,33.077,14.246Z" transform="translate(0.178 1.07)" fill="#fff"/></svg></div></div>
                        <div id="texteFonce">Type</div>
                    </div>
                    <div id="videFonce"></div>
                    <div id="troisieme">
                        <div id="rondNumeroFonce"> <div id="numero">3</div></div>
                        <div id="texteFonce">Conformité</div>
                    </div>
                </div>
  
                <div id="coutOUduree">
                    <div id="cout">
                        <div id="coutText">
                            <label for="cout">Cout </label>
                        </div>
                        <div id="coutValeur">
                            <input type="text" name="cout" id="cout" />
                        </div>
                    </div>
                    <div id="OU">OU</div>
                    <div id="duree">
                        <div id="dureeText">
                            <label for="duree">Durée </label>
                        </div>
                        <div id="dureeValeur">
                            <input type="text" name="duree" id="duree" required/>
                        </div>
                    </div>
                </div>
                <label for="descriptionMEC"></label> <textarea name="descriptionMEC" id="descriptionMEC" placeholder="Description de la mise en conformité*" required></textarea>
                <br/>
  
  
            </div>
  
        </form>
        <form id="form1Bis" action="{{path('ficheNC')}}" enctype="multipart/form-data" method="POST" class="dropzone dz-clickable">
            <div class="dz-default dz-message" aria-placeholder="">
                <input type="file" multiple="multiple" class="dz-hidden-input" style="visibility: hidden; position: absolute; top: 0; left: 0; height: 0; width: 0;">
            </div>
        </form>
  
        <input type="button" id="precedentpage3" value="Précédent" onclick="openPage2();"/>
        <button  name="creationFiche" id="valider1" form="form2" class="btn btn-success" onclick="submitForms();"><svg xmlns="http://www.w3.org/2000/svg" width="38.086" height="38.086" viewBox="0 0 38.086 38.086">
                <g id="Icon_feather-send" data-name="Icon feather-send" transform="translate(1.5 6.586)">
                    <path id="Tracé_2120" data-name="Tracé 2120" d="M33,3,16.5,19.5" transform="translate(-3 -3)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>
                    <path id="Tracé_2121" data-name="Tracé 2121" d="M38.086,3,25.806,38.086,18.789,22.3,3,15.28Z" transform="translate(-3 -8.086)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>
                </g>
            </svg>
        </button>
    </DIV>
  
    <br/>
    <script>
        const page1 = document.getElementById('page1');
        const page2 = document.getElementById('page2');
        const page3 = document.getElementById('page3');
        const idForm1= document.getElementById('form1');
        const idForm1Bis= document.getElementById('form1Bis');
        const boutonSuivantPage2=document.getElementById('suivantPage2');
        const bouttonPrecedentPage2=document.getElementById('precedentPage2');
        const boutonprecedentpage3=document.getElementById('precedentpage3');
        const boutonValider=document.getElementById('valider1');
  
        boutonValider.style.display='none';
        boutonprecedentpage3.style.display='none';
        boutonSuivantPage2.style.display='none';
        bouttonPrecedentPage2.style.display='none';
        idForm1.style.display='none';
        idForm1Bis.style.display='none';
        page1.style.display = 'block';
        page2.style.display = 'none';
        page3.style.display = 'none';
  
        function openPage1()
        {
            page1.style.display = 'block';
            page2.style.display = 'none';
            page3.style.display = 'none';
            idForm1.style.display='none';
            idForm1Bis.style.display='none';
            bouttonPrecedentPage2.style.display='none';
            boutonSuivantPage2.style.display='none';
            boutonprecedentpage3.style.display='none';
            boutonValider.style.display='none';
        }
  
        function openPage2()
        {
            page1.style.display = 'none';
            page2.style.display = 'block';
            page3.style.display = 'none';
            idForm1.style.display='block';
            idForm1Bis.style.display='none';
            bouttonPrecedentPage2.style.display='block';
            boutonSuivantPage2.style.display='block';
            boutonprecedentpage3.style.display='none';
            boutonValider.style.display='none';
        }
  
        function openPage3()
        {
            page1.style.display = 'none';
            page2.style.display = 'none';
            page3.style.display = 'block';
            idForm1.style.display='none';
            idForm1Bis.style.display='block';
            bouttonPrecedentPage2.style.display='none';
            boutonSuivantPage2.style.display='none';
            boutonprecedentpage3.style.display='block';
            boutonValider.style.display='block';
        }
  
        function submitForms(){
  
          /*  $('<input />').attr('type', 'hidden')
                .attr('creationFiche', param.name)
                .attr('creationFiche', param.value)
                .appendTo('#form2');*/
          //  document.getElementById("form1").submit();
            document.getElementById("form2").submit();
            document.getElementById("form3").submit();
  
        }
  
    </script>
    <script>
        var dropzone = new Dropzone('#demo-upload', {
         //   previewTemplate: document.querySelector('#preview-template').innerHTML,
            parallelUploads: 2,
            thumbnailHeight: 120,
            thumbnailWidth: 120,
            maxFiles: 5,
            maxFilesize: 3,
            filesizeBase: 1000,
            thumbnail: function(file, dataUrl) {
                if (file.previewElement) {
                    file.previewElement.classList.remove("dz-file-preview");
                    var images = file.previewElement.querySelectorAll("[data-dz-thumbnail]");
                    for (var i = 0; i < images.length; i++) {
                        var thumbnailElement = images[i];
                        thumbnailElement.alt = file.name;
                        thumbnailElement.src = dataUrl;
                    }
                    setTimeout(function() { file.previewElement.classList.add("dz-image-preview"); }, 1);
                }
            }
  
        });
  
  
        // Now fake the file upload, since GitHub does not handle file uploads
        // and returns a 404
  
        var minSteps = 6,
            maxSteps = 60,
            timeBetweenSteps = 100,
            bytesPerStep = 100000;
  
        dropzone.uploadFiles = function(files) {
            var self = this;
  
            for (var i = 0; i < files.length; i++) {
  
                var file = files[i];
                totalSteps = Math.round(Math.min(maxSteps, Math.max(minSteps, file.size / bytesPerStep)));
  
                for (var step = 0; step < totalSteps; step++) {
                    var duration = timeBetweenSteps * (step + 1);
                    setTimeout(function(file, totalSteps, step) {
                        return function() {
                            file.upload = {
                                progress: 100 * (step + 1) / totalSteps,
                                total: file.size,
                                bytesSent: (step + 1) * file.size / totalSteps
                            };
  
                            self.emit('uploadprogress', file, file.upload.progress, file.upload.bytesSent);
                            if (file.upload.progress == 100) {
                                file.status = Dropzone.SUCCESS;
                                self.emit("success", file, 'success', null);
                                self.emit("complete", file);
                                self.processQueue();
                                //document.getElementsByClassName("dz-success-mark").style.opacity = "1";
                            }
                        };
                    }(file, totalSteps, step), duration);
                }
            }
        }
    </script>
</div>
</div>
Salut,

Quand tu fais un submit, tu demande donc à faire une requête http, ce qui recharge ta page, et donc ton deuxième submit ne fonctionnera pas.

Il faut passé par AJAX Smiley smile
Salut JENCAL,
Merci pour ta réponse si rapide.
Je ne connais pas du tout AJAX, vraiment jamais utilisé de ma vie, est-ce que tu aurais un exemple dans le type de ce que je veux faire ? ou un site qui pourrait m'aider ?

Merci encore !
https://www.w3schools.com/js/js_ajax_intro.asp

En gros, je simplifie, Ajax te permet d’appeler une page PHP sans recharger la page (mais uniquement la zone que tu aura choisi)

En gros =>
Je récupère mes infos du FORM 1
J'envoie en AJAX à ma page "calcule FORM 1" qui est www.monsite.com/FORM1.php (dedans j'aurais mon calcul)
A la fin de mon php je fais un "return $result" qui me permet d'avoir le résultat de mon calcul
La requête ajax revient donc vers le javascript dans la partie success (ou error) et j'ai mon $result et je peux l'utiliser pour rafraichir mon nouveau FORM 2 par exemple.

Je te conseil de lire des tutos, AJAX c'est pas compliqué mais le concept change de ce que tu connais déjà.