Ciao a tutti,
ho bisogno di un suggerimento per un esercizio che vorrei preparare utilizzando il Dra&Drop. In sostanza, l'utente dovrebbe trascinare nei campi appositi le parole corrette di una frase. Un tasto poi lo informa se la sua soluzione è corretta oppure no.
Il mio problema è il seguente: avrei bisogno, ad ogni trascinamento di parola, di creare una copia esattamente identica della parola appena trascinata. Come soluzione molto "personale", ho pensato di stampare a schermo tramite php un doppione della parola con attributo "display:none", per poi, al momento del trascinamento, di renderlo visibile. E funziona.
Il problema tuttavia è che dovrei riuscire a intercettare il movimento di un singolo div e di associare al suo drag&drop la comparsa dell'altro div corrispondente e nascosto. E questo non riesco a farlo. Qualcuno sa consigliarmi?
Allego il codice intero. Grazie a tutti per l'aiuto.
codice:<!DOCTYPE HTML> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <style> .frase {color:grey; font-size:20px; font-family:calibri; padding:10px; border:solid grey 2px;background:#f5f5f5;border-radius:10px; display:inline-block} .parola {display:inline-block; border:solid red 1px; padding:5px} #div1, #div3, #div5 {display:inline; float:left; } #div2, #div4, #div6 { margin: 10px; border: 1px solid black; height:30px; } #dragpre1, #dragpre2, #dragpre3 {display:none; color:red} </style> <script> function allowDrop(ev) {ev.preventDefault();} function drag(ev) {ev.dataTransfer.setData("text", ev.target.id);} function drop(ev) { ev.preventDefault(); var data = ev.dataTransfer.getData("text"); ev.target.appendChild(document.getElementById(data)); $("#dragpre1").css("display","inline-block"); $("#dragpre2").css("display","inline-block"); $("#dragpre3").css("display","inline-block"); } </script> </head> <body> <div class="frase" ondrop="drop(event)"> <div class="parola" id="dragpre1">Fuori</div> <div class="parola" draggable="true" ondragstart="drag(event)" id="drag1">Fuori</div> <div class="parola" id="dragpre2">nevica</div> <div class="parola" draggable="true" ondragstart="drag(event)" id="drag3">nevica</div> <div class="parola" id="dragpre3">copiosamente</div> <div class="parola" draggable="true" ondragstart="drag(event)" id="drag5">copiosamente</div> <div class="parola">.</div> </div> <br><br><br> <div class="soggetto soggetto-bivalente" id="div2" ondrop="drop(event)" ondragover="allowDrop(event)">Qui trascina "Fuori"</div> <div class="verbo verbo-bivalente" id="div4" ondrop="drop(event)" ondragover="allowDrop(event)">Qui trascina "nevica"</div> <div class="oggetto-diretto oggetto-diretto-bivalente" id="div6" ondrop="drop(event)" ondragover="allowDrop(event)">Qui trascina "copiosamente"</div> <br> <div class="cestino" ondrop="drop(event)" ondragover="allowDrop(event)" style="height:50px; border:solid 1px grey">Metti qui le voci non utilizzate</div> <br> <button onclick="myFunction()">CONTROLLA</button> <script> function myFunction() { if ($("#div6").find("#drag5").length > 0 && $("#div2").find("#drag1").length > 0 && $("#div4").find("#drag3").length > 0) { alert("ok"); } else { alert("ricontrolla..."); } } </script> </body> </html>

Rispondi quotando

