Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer des données Perl + Javascript

Sujet résolu
    7 novembre 2017 à 12:27:31

    Bonjour à tous, on me demande au travail de travailler sur Perl, Javascript afin de traiter des templates. J'ai crée une interface de drag & drop afin de permettre aux utilisateurs de glisser/déposer des éléments sous forme d'input. Cepednant, je n'arrive pas à récupérer ces valeurs insérées par les utilisateurs. :/

    Pourriez-vous m'aider svp?

    PS: Je suis débutant en Perl, je commence tout juste.

    Merci d'avance.

    HTML :

        <div class="container mtb">
            <br /> <br /><br />
            <div class="row">
                <ul class="breadcrumb breadcrumb-light breadcrumb-divider-middot">
                    <li><a href="<TMPL_VAR NAME=MYURL>?rm=models">Templates</a></li>
                    <li class="active">Ajouter</li>
                </ul>
                <TMPL_IF NAME="PROFILE">
                <div class="container" id="previewarea">
                  <i class="fa fa-lightbulb-o fa-2x" aria-hidden="true" id="info" style="margin-left: 10%; width: 500px; color: #FFD700"></i> <p style="margin-left: 14%; margin-top: -2.5%; font-size: 16px; margin-bottom: -1%; color: #800080">A noter : Double-cliquez simplement sur la zone insérée et elle se supprimera !</p>
                  <div class="row" style="border: 1px solid ; border-radius: 25px; margin: 2%; width: 53%; height: 40px; text-align: center; font-weight: bold; color: #000000; margin: auto; margin-top: 5%">
                      <label type="button" class="btn btn-primary brn-md" style="height: 30px; margin-top: 5px; text-align: center; font-weight: bold; font-size: 12px; margin-left: 1px; margin-bottom: 10px" title="Ajoutez un titre" id="Titre" draggable="true">Titre</label>
                      <label type="button" class="btn btn-primary btn-md" style="height: 30px; margin-top: 5px; text-align: center; font-weight: bold; font-size: 12px; margin-left: 10px; margin-bottom: 10px" title="Ajoutez un message" id="Message" draggable="true">Texte</label>
                      <label type="button" class="btn btn-primary btn-md" style="height: 30px; margin-top: 5px; text-align: center; font-weight: bold; font-size: 12px; margin-left: 10px; margin-bottom: 10px" title="Ajoutez l'URL de votre image" id="Image" draggable="true">Image</label>
                      <label class="btn btn-primary btn-md" style="height: 30px; margin-top: 5px; text-align: center; font-weight: bold; font-size: 12px; margin-left: 10px; margin-bottom: 10px" title="Ajouter l'URL de votre lien" id="Lien" draggable="true">Lien</label>
                  </div>
                  <div class="drop-target">
                    <div class="drop-target-1" title="Ici, vous pouvez ajouter un titre"></div>
                    <div class="drop-target-2" title="Ici, vous pouvez ajouter un message"></div>
                    <div class="drop-target-3" title="Ici, vous pouvez ajouter une image"></div>
                    <div class="drop-target-4" title="Ici, vous pouvez ajouter un lien"></div>
                    <div class="drop-target-phone" style="width: 178px; height: 80px" title="Ajouter un n° de téléphone"></div>
                    <div class="drop-target-mail" style=" width: 178px; height: 80px; margin-left: 34%; margin-top: -95px; " title=" Ajouter un mail"></div>
                    <div class="drop-target-contact" style=" width: 178px; height: 80px; margin-left: 69%; margin-top: -95px" title="Ajouter un nom et prénom"></div>
                  </div>
                  <p id="action" style="font-size: 17px; margin-left: 100px; margin-top: 1%"></p>
                  <div class="row" style="border: 1px solid ; border-radius: 25px; width: 62%; height: 40px; text-align: center; font-weight: bold; color: #000000; margin: auto; margin-top: 3%">
                    <label type="button" class="btn btn-primary btn-md" style="height: 30px; margin-top: 5px; text-align: center; font-weight: bold; font-size: 12px; margin-left: 1px;" title="Ajouter votre n° de téléphone" id="numtel" draggable="true">N° de Téléphone</label>
                    <label type="button" class="btn btn-primary btn-md" style="height: 30px; margin-top: 5px; text-align: center; font-weight: bold; font-size: 12px; margin-left: 10px;" title="Ajouter votre mail" id="mail" draggable="true">Mail</label>
                    <label type="button" class="btn btn-primary btn-md" style="height: 30px; margin-top: 5px; text-align: center; font-weight: bold; font-size: 12px; margin-left: 10px;" title="Ajouter votre nom et prénom" id="contact" draggable="true">Nom et Prénom</label>
                  </div>
                </div>
             </form>
                    <!--<div class="panel panel-primary" id="panels" data-effect="helix">
                      <div class="panel-heading">Elements
                      </div>
                      <div class="panel-body">
                        <p>
                        <h3>Sens d'affichage</h3>
                        <button class="btn btn-default" id="vertical" onclick="setDisplayType('vertical')">VERTICALE</button>
                        <button class="btn btn-default" id="horizontal" onclick="setDisplayType('horizontal')">HORIZONTALE</button></p>
                      </div>
                      <div class="panel-body">
                        <p>
                        <h3>Contenu</h3>
                        <button class="btn btn-default" onclick="titleFunction()">TITRE</button>
                        <button class="btn btn-default" onclick="fileFunction()">IMAGE</button>
                        <button class="btn btn-default" onclick="textareaFunction()">TEXTE</button><br/><br/>
                        <h3>Contact</h3>
                        <button class="btn btn-default" id="ctrl_sms"onclick="smsContactFunction()">SMS CONTACT</button>
                        <button class="btn btn-default" id="ctrl_email"onclick="mailContactFunction()">MAIL CONTACT</button><br/><br/>
                        <button class="btn btn-danger" onclick="resetElements()">Reset</button></p>
                      </div>
                      <div class="panel-footer">
                      </div>
                    </div>
                    </div>
                    <div class="col-lg-6" >
                     <div class="panel panel-primary" id="panels" data-effect="helix">
                      <div class="panel-heading">Affichage
                      </div>
                      <div class="panel-body">-->
                            <!--<h5>Nom du template</h5>
                            <input type="text" name="model_name" placeholder="Nom du template" required><br /><br />
                            <span id="myForm"></span>
                            <span id="myContactForm"></span>-->
                            <input type="hidden" name="id" value="<TMPL_VAR NAME=DATA>"/>
                            <input type="hidden" name="rm" value="importModel"/>
                <!--<p>-->
                            <p></p></p><input type="button" class="btn btn-primary" value="Preview" style="margin-left: 40%; margin-top: 1%; margin-bottom: 5%" onclick="preview('<TMPL_VAR NAME=MYURL>')"></input><input type="submit" class="btn btn-primary" value="Soumettre" style="margin-left: 5%; margin-top: 1%; margin-bottom: 5%"></input>
                                                    <input type="hidden" name="id" value="<TMPL_VAR NAME=DATA>"/>
                                                    <input type="hidden" name="rm" value="PreviewZone" />
                        </div>
                      <!--<div class="panel-footer">
                      </div>-->
                    </div>
                <TMPL_ELSE>
                    <TMPL_IF NAME="BADLOGINS">
                        Mauvais utilisateur ou mot de passe. <TMPL_VAR NAME=BADLOGINS> tentatives.<br/>
                    </TMPL_IF>
                    <form role="form" action = "<TMPL_VAR NAME=MYURL>" method="POST" enctype="application/x-www-form-urlencoded">
                      <div class="form-group">
                        <label for="username">Nom d'utilisateur</label>
                        <input type="text" class="form-control" id="username" name="lg_nick">
                      </div>
                      <div class="form-group">
                        <label for="password">Mot de passe</label>
                        <input type="password" class="form-control" id="password" name="lg_pass">
                      </div>
                      <input type="submit" class="btn btn-theme" value="Se connecter" />
                    </form>
                </div><! --/col-lg-8 -->
                </TMPL_IF>
            </div><! --/row -->
         </div><! --/container -->
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
            <script src="assets/js/bootstrap.min.js"></script>
            <script src="assets/js/retina-1.1.0.js"></script>
            <script src="assets/js/jquery.hoverdir.js"></script>
            <script src="assets/js/jquery.hoverex.min.js"></script>
            <script src="assets/js/jquery.prettyPhoto.js"></script>
            <script src="assets/js/jquery.isotope.min.js"></script>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
            <!--<script src="assets/js/models.js"></script>-->
            <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
            <script src="assets/js/dropzone.js"></script>
            <link rel="stylesheet" href="assets/css/dropzone.css">
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
            <!--<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">-->
            <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
        </body>
    </html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              112,7        Tout
    

    Javascript :

    var counter = 0;
    
        document.addEventListener("dragstart", function(event) {
            // The dataTransfer.setData() method sets the data type and the value of the dragged data
            event.dataTransfer.setData("Text", event.target.id);
    
            // Output some text when starting to drag the label element
            document.getElementById("action").innerHTML = "Vous avez glissé votre élément !";
    
            // Change the opacity of the draggable element
            event.target.style.opacity = "0.4";
            save = event;
            setTimeout(function() {
                document.getElementById('action').innerHTML = ""; }, 2500);
            });
    
        // While dragging the label element, change the color of the output text
        document.addEventListener("drag", function(event) {
            document.getElementById("action").style.color = "#CD5C5C";
        });
    
        // Output some text when finished dragging the label element and reset the opacity
    
        document.addEventListener("dragend", function(event) {
            if(event.target.className == "drop-target") {
                document.getElementById("action").innerHTML = "Vous avez bien déposé votre élément !";
            }
           /* else if(event.target.className == "drop-target-Titre") {
                document.getElementById("action").innerHTML = "Vous avez bien déposé votre titre !";
            }
            else if(event.target.className == "drop-target-Message") {
                document.getElementById("action").innerHTML = "Vous avez bien déposé votre message !";
            }
            else if(event.target.className == "drop-target-Image") {
                document.getElementById("action").innerHTML = "Vous avez bien déposé votre image !";
            }
            else if(event.target.className == "drop-target-Lien") {
                document.getElementById("action").innerHTML = "Vous avez bien déposé votre lien !";
            }*/
            event.target.style.opacity = "1";
            document.getElementById("action").style.color = "#CD5C5C";
    
            setTimeout(function() {
                document.getElementById('action').innerHTML = ""; }, 2500);
        });
    
    
        /* Events fired on the drop target */
    
        // When the draggable label element enters the droptarget, change the DIVS's border style
        document.addEventListener("dragenter", function(event) {
            if ( event.target.className == "drop-target") {
                event.target.style.border = "3px dotted #483D8B";
            }
            else if(event.target.className == "drop-target-1") {
                event.target.style.border = "3px dotted #483D8B";
                document.getElementById("action").innerHTML = "Vous êtes au bon endroit pour insérer votre élément ! ";
            }
            else if(event.target.className == "drop-target-2") {
                event.target.style.border = "3px dotted #483D8B";
                document.getElementById("action").innerHTML = "Vous êtes au bon endroit pour insérer votre élément ! ";
            }
            else if(event.target.className == "drop-target-3") {
                event.target.style.border = "3px dotted #483D8B";
                document.getElementById("action").innerHTML = "Vous êtes au bon endroit pour insérer votre élément ! ";
            }
            else if(event.target.className == "drop-target-4") {
                event.target.style.border = "3px dotted #483D8B";
                document.getElementById("action").innerHTML = "Vous êtes au bon endroit pour insérer votre élément ! ";
            }
            else if(event.target.className == "drop-target-phone" && save.target.id == "numtel") {
                event.target.style.border = "3px dotted #483D8B";
                document.getElementById("action").innerHTML = "Vous êtes au bon endroit pour insérer votre n° de téléphone !";
            }
            else if (event.target.className == "drop-target-mail" && save.target.id == "mail") {
                event.target.style.border = "3px dotted #483D8B";
                document.getElementById("action").innerHTML = "Vous êtes au bon endroit pour insérer votre mail !";
            }
            else if(event.target.className == "drop-target-contact" && save.target.id == "contact") {
                event.target.style.border = "3px dotted #483D8B";
                document.getElementById("action").innerHTML = "Vous êtes au bon endroit pour insérer votre nom et prénom !";
            }
    
            setTimeout(function() {
                document.getElementById('action').innerHTML = ""; }, 2500);
        });
    
        // By default, data/elements cannot be dropped in other elements. To allow a drop, we must prevent the default handling of the element
        document.addEventListener("dragover", function(event) {
            event.preventDefault();
        });
    
        // When the draggable label element leaves the droptarget, reset the DIVS's border style
        document.addEventListener("dragleave", function(event) {
            if(event.target.className == "drop-target") {
                event.target.style.border = "";
            }
            else if(event.target.className == "drop-target-1") {
                event.target.style.border = "";
            }
            else if(event.target.className == "drop-target-2") {
                event.target.style.border = "";
            }
            else if(event.target.className == "drop-target-3") {
                event.target.style.border = "";
            }
            else if(event.target.className == "drop-target-4") {
                event.target.style.border = "";
            }
            else if (event.target.className == "drop-target-phone") {
                event.target.style.border = "";
            }
            else if (event.target.className == "drop-target-mail") {
                event.target.style.border = "";
            }
            else if (event.target.className == "drop-target-contact") {
                event.target.style.border = "";
            }
        });
    
        /* On drop - Prevent the browser default handling of the data (default is open as link on drop)
           Reset the color of the output text and DIV's border color
           Get the dragged data with the dataTransfer.getData() method
           The dragged data is the id of the dragged element ("drag1")
           Append the dragged element into the drop element
        */
        /*document.addEventListener("drop", function(event) {
            event.preventDefault();
            if ( event.target.className == "drop-target-Titre" ) {
                document.getElementById("action").style.color = "";
                event.target.style.border = "";       
                var data = event.dataTransfer.getData("Text");
                    switch (data) {
                        case 'Titre':
                            $('.drop-target').append("<div class='col-sm-12' droppable='false' id='deletetitle"+ counter+"' ondblclick='supprimer(this,\"titre\")'> <span style='font-style: italic; margin-right: 5%; font-size: 16px'>Votre titre :</span> <input type='text' name='TitreCli' style='margin-right: 25%; width: 250px; height: 30px; background-color: #F5F5DC'></input></div>");
                            break;
                        case 'Texte':
                            $('.drop-target').append("<div class='col-sm-12' droppable='false' id='deletetext"+ counter+"' ondblclick='supprimer(this,\"texte\")'> <span style='font-style: italic; margin-right: 15%; font-size: 16px;'>Votre message : </span> <textarea name='MessageCli' style='margin-right: 25%; max-height: 50px; max-width: 500px; background-color: #F5F5DC'></textarea></div>");
                            break;
                        case 'Image':
                            $('.drop-target').append("<div class='col-sm-12' droppable='false' id='deleteimage"+ counter+"' ondblclick='supprimer(this,\"image\")'> <span style='font-style: italic; margin-right: 24.5%; font-size: 16px'>Votre image : </span> <input type='text' name='ImageCli' style='margin-right: 25%; background-color: #F5F5DC'></input><div>");
                            break;
                        case 'Lien':
                            $('.drop-target').append("<div class='col-sm-12' droppable='false' id='deletelink"+ counter+"' ondblclick='supprimer(this,\"lien\")'> <span style='font-style: italic; margin-right: 40%; font-size: 16px'> Votre lien : </span> <input type='text' name='LienCli' style='margin-left: -12%; margin-right: 20%; background-color: #F5F5DC'></input><div>");
                            break;
                    }
                counter ++;
            }
                    
            });*/
    
        document.addEventListener("drop", function(event) {
            event.preventDefault();
            if(event.target.className == "drop-target-1") {
                $('.drop-target-1').append("<div class='col-sm-12' droppable='false' id='"+ save.target.id +"' ondblclick='deleteContents(this,\"" + save.target.id+"\")'> <span style='font-style: italic; margin-right: 5%; font-size: 16px'>Votre " + save.target.id +" :</span> <input type='text' id='"+ save.target.id +"-1' style='margin-right: 25%; width: 250px; height: 40px; background-color: #F5F5DC'></input></div>");
            }
            else if(event.target.className == "drop-target-2") {
                $('.drop-target-2').append("<div class='col-sm-12' droppable='false' id='"+ save.target.id +"' ondblclick='deleteContents(this,\"" + save.target.id+"\")'> <span style='font-style: italic; margin-right: 5%; font-size: 16px'>Votre " + save.target.id +" :</span> <textarea id='"+ save.target.id+"-2' style='margin-top: -1%; margin-right: 25%; width: 250px; height: 40px; background-color: #F5F5DC'></textarea></div>");
            }
            else if(event.target.className == "drop-target-3") {
                $('.drop-target-3').append("<div class='col-sm-12' droppable='false' id='"+ save.target.id+"' ondblclick='deleteContents(this,\"" + save.target.id+"\")'> <span style='font-style: italic; margin-right: 5%; font-size: 16px'>Votre " + save.target.id+" :</span> <input type='text' id='"+ save.target.id+"-3' style='margin-right: 25%; width: 250px; height: 40px; background-color: #F5F5DC'></input></div>");
            }
            else if(event.target.className == "drop-target-4") {
                $('.drop-target-4').append("<div class='col-sm-12' droppable='false' id='"+ save.target.id+"' ondblclick='deleteContents(this,\""+ save.target.id+"\")'> <span style='font-style: italic; margin-right: 5%; font-size: 16px'>Votre "+ save.target.id+" :</span> <input type='text' id='"+ save.target.id+"-4' style='margin-right: 25%; width: 250px; height: 40px; background-color: #F5F5DC'></input></div>");
            }
            else if (event.target.className == "drop-target-phone" && save.target.id == "numtel") {
                $('.drop-target-phone').append("<div class='col-sm-4' droppable='false' id='telcli' ondblclick='deleteContents(this,\"téléphone\")' style='width: 175px; height: 80px;'> <span style='font-style: italic; margin-right: 8%; font-size: 16px; text-align: center'> Téléphone :</span> <input type='text' id='telcli' style='margin-right: 5%; width: 150px; height: 30px; background-color: #F5F5DC'></input></div>");
            }
            else if (event.target.className == "drop-target-mail" && save.target.id == "mail") {
                $('.drop-target-mail').append("<div class='col-sm-4' droppable='false' id='mailcli' ondblclick='deleteContents(this,\"mail\")' style='width: 175px; height: 80px'> <span style='font-style: italic; margin-right: 8%; font-size: 16px; text-align: center'> Mail :</span> <input type='text' id='mailcli' style='margin-right: 5%; width: 150px; height: 30px; background-color: #F5F5DC'></input></div>");
            }
            else if (event.target.className == "drop-target-contact" && save.target.id == "contact") {
                $('.drop-target-contact').append("<div class='col-sm-4' droppable='false' id='contactcli' ondblclick='deleteContents(this,\"contact\")' style='width: 175px; height: 80px'> <span style='font-style: italic; margin-right: 8%; font-size: 16px; text-align: center'> Contact :</span> <input type='text' id='contactcli' style='margin-right: 5%; width: 150px; height: 30px; background-color: #F5F5DC'></input></div>");
            };
            event.target.style.border = "";
        });
    
        function deleteContents(nom, argument) {
            $(nom).remove();
            document.getElementById("action").innerHTML = "Vous avez bien supprimé votre " +argument+" !";
            setTimeout(function() {
                document.getElementById("action").innerHTML = ""; }, 2500);
            };
    
    /*function preview() {
            var toPrint = document.getElementById('previewarea');
            var popupWin = window.open('', '_blank', 'width=400,height=700,location=no,left=200px');
            
            popupWin.document.open();
        popupWin.document.write('<html><title>::PrintPreview::</title><body><p>Vos données ont bien été enregistrées !</p></body">');
            popupWin.document.write('</html>');
            popupWin.document.close();
        }*/
    
    function preview(url) {
    /*
    regex pour le téléphone /^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/; */
    
        var myData = {
            'rm':'previewZone',
            /*'Title': document.getElementById('titlecli').value,
            'Message': document.getElementById('messagecli').value,
            'Image': document.getElementById('imagecli').value,
            'Link': document.getElementById('linkcli').value,*/
            'Tel': document.getElementById('numtel').value,
            'Mail': document.getElementById('mailcli').value,
            'Contact': document.getElementById('contactcli').value
        };
    
        $.post(url,myData).done(function(data)
        {
            var popupWin = window.open('', '_blank', 'width=400,height=700,location=no,left=200px');
            popupWin.document.open();
            popupWin.document.write('<html><title>::PrintPreview::</title><body><p>Vos données ont bien été enregistrées !</p></body">');
            popupWin.document.write('</html>');
            popupWin.document.close();
        });
    }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

    Mon responsable me conseille d'abord de récupérer les valeurs en JS dans la fonction preview(), en utilisant le DOM getElementsByTagName() pour récupérer les valeurs insérées dans les <input>

    -
    Edité par Maestro974 7 novembre 2017 à 13:51:28

    • Partager sur Facebook
    • Partager sur Twitter
    Pouce bleu à celui qui vous a aidé! Poster votre code : balise </> ! lire les règles généralescharte de bonne conduite :)

    Récupérer des données Perl + Javascript

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown