Duplicare oggetti con jquery

lunedì 10 maggio 2010 - 18.38

tigre Profilo | Junior Member

in una pagina ho un form cosi composto:
<text name="nominativo"> <text name="indirizzo"> [pulsante Aggiungi]

in pratica se clicco su Aggiungi mi dovrebbe duplicare le due text
<text name="nominativo"> <text name="indirizzo"> [pulsante Elimina]

alla fine il pulsante SALVA che dovrebbe salvare i dati in un database.

alx_81 Profilo | Guru

>in pratica se clicco su Aggiungi mi dovrebbe duplicare le due
>text
ciao,
leggi il metodo .clone(), che ti consente di duplicare l'html del selettore che gli passi:
http://api.jquery.com/clone/


--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

tigre Profilo | Junior Member

ho provato a vedere ma non so come iniziare.
dovrei avere due text e un pulsante per duplicare eventualmente le text-
poi inviare i dati ad una pagina per il salvataggio del record

alx_81 Profilo | Guru

>ho provato a vedere ma non so come iniziare.
>dovrei avere due text e un pulsante per duplicare eventualmente
>le text-
ti ho allegato un esempio di duplicazione con tanto di html salvato su un campo di testo (che se vuoi puoi nascondere facendolo come hidden).

>poi inviare i dati ad una pagina per il salvataggio del record
Con un ulteriore pulsante puoi inviare il contenuto del campo per inserirlo a database.

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

tigre Profilo | Junior Member

grazie dell'allegato.
ho controllato, come si fa per eliminare eventualmente una div,
e per inviare il valore dei vari campi per memorizzarli in un database?

alx_81 Profilo | Guru

>grazie dell'allegato.
>ho controllato, come si fa per eliminare eventualmente una div,
nuovo esempio in allegato

>e per inviare il valore dei vari campi per memorizzarli in un database?
devi usare ado.net per inserire..

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

tigre Profilo | Junior Member

grazie dell'allegato, è quello che mi serviva, ora lo modifico.
ma per recuperare il nome dei campi e i valori per memorizzarli come devo fare?

tipo nominativo=request......?


alx_81 Profilo | Guru

>grazie dell'allegato, è quello che mi serviva, ora lo modifico.
>ma per recuperare il nome dei campi e i valori per memorizzarli
>come devo fare?
ok, la tecnologia che usi? Asp.Net? Asp classico? php?

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

tigre Profilo | Junior Member

hai ragione, uso Asp classico

alx_81 Profilo | Guru

>hai ragione, uso Asp classico
allora, quando passi dei dati ad una pagina, per leggerli devi usare l'oggetto Request:

Dim valoreCampo = Request("NomeCampo")

poi devi usare ADO per inserire il record su database, ti invito a leggere questo link per formarti:
http://www.w3schools.com/ado/default.asp
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

tigre Profilo | Junior Member

questo si, io uso per recuperare i campi in asp
utilizzo request.form("nome campo")
o request.querystring("nome campo")
esempio:
<input text name="nominativo">
<input text name="citta">

nome=request.form("nominativo")
citta=request.form("citta")
ma nel caso di duplicazione che mi hai dato,
il nome dei campi dove li trovo?

alx_81 Profilo | Guru

>questo si, io uso per recuperare i campi in asp
>utilizzo request.form("nome campo")
>o request.querystring("nome campo")
>esempio:
><input text name="nominativo">
><input text name="citta">
>
>nome=request.form("nominativo")
>citta=request.form("citta")
>ma nel caso di duplicazione che mi hai dato,
>il nome dei campi dove li trovo?
noterai che nel jquery vado a cambiare l'attributo ID mettendone uno univoco. Se tu dai a tutti lo stesso nome, la request("nome") ti tornerà un array di quegli oggetti, facilmente ciclabile con un ciclo foreach.

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

tigre Profilo | Junior Member

ora provo e ti farò sapere....
grazie tantoooo

tigre Profilo | Junior Member

non vedo dove scrivi l'id del controllo:

<div id="divToCopy">
Nome <input type="text" /><br />
Cognome <input type="text" /><br />
Anno di nascita
<select>
<option value="1">1990</option>
<option value="2">1989</option>
<option value="3">1988</option>
<option value="4">1986</option>
<option value="5">1985</option>
</select>
</div>

----------------
è qui?
<script type="text/javascript">
$(document).ready(function() {

// aggiunta
$("#btnCopia").click(function () {

// genero un id univoco (conto gli elementi che iniziano per divToCopyTo
var numberOfDestinationElements = $("div[id^=divDestination]").length + 1;
var newDivId = "divDestination" + numberOfDestinationElements;
var newBtnId = "btnElimina" + numberOfDestinationElements;

// copio nel contenitore la sorgente e ridefinisco la destinazione andando a cambiare l'id per dare univocità
$("#divToCopy").clone().attr("id", newDivId).appendTo("#divContainer");

// aggiungo il pulsante di elimina al volo e gli collego l'evento
$("#" + newDivId)
.append("<input type='button' value='Elimina' id='" + newBtnId + "' /><hr></hr>")
.children("input").click(function() {
$("#" + newDivId).remove();

// salvo il nuoveo html
$("#textHTML").text($("#divContainer").html());
});

alx_81 Profilo | Guru

>non vedo dove scrivi l'id del controllo:
la riga è la seguente..
$("#divToCopy").clone().attr("id", newDivId).appendTo("#divContainer");

ma se tu devi cercare i campi che copi, basta che usi il nome degli oggetti che copi con la request..
immagino che quello che tu copi sia in un formato html valido..
prova a passarci il codice..
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

tigre Profilo | Junior Member

ciao, ho fatto sicuramente qualche cretinata, ti allego il file.
In pratica ho notato questo:
quando aggiungo un clone me lo fa vedere con i dati del primo e quandop vado sul campo duplicato mi elimina il clone.
poi quando invio i dati alla pagina per visualizzare i dati mi fa vedere il valore del primo rigo.
mi puoi controllare dove ho sbagliato?

alx_81 Profilo | Guru

>ciao, ho fatto sicuramente qualche cretinata, ti allego il file.
>In pratica ho notato questo:
>quando aggiungo un clone me lo fa vedere con i dati del primo
>e quandop vado sul campo duplicato mi elimina il clone.
>poi quando invio i dati alla pagina per visualizzare i dati mi
>fa vedere il valore del primo rigo.
>mi puoi controllare dove ho sbagliato?
Quello che mi hai allegato funziona.. Non capisco il problema..

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

tigre Profilo | Junior Member

a me fa cosi:
quando clicco su Copia Sotto, mi ripete la div sotto,
ma se mi metto col cursore sulla text mi nasconde la div.
Il mio problema è che quando clicco su invia, mi deve per il momento visulizzare il valore delle text (per poi memorizzarle),
SE per esempio copio 3 div mi deve visualizzare a video il valore di tutti campi.

alx_81 Profilo | Guru

>a me fa cosi:
>quando clicco su Copia Sotto, mi ripete la div sotto,
>ma se mi metto col cursore sulla text mi nasconde la div.
ok, ho corretto. Cercavo i figli di tipo input, ma dovevo specificare anche di tipo button

>Il mio problema è che quando clicco su invia, mi deve per il
>momento visulizzare il valore delle text (per poi memorizzarle),
>SE per esempio copio 3 div mi deve visualizzare a video il valore
>di tutti campi.
quello che vado a scrivere io è l'html che generi copiando. Se devi passare il valore dei campi che vai a creare, basta fare una submit ad una pagina e andare a fare la request degli oggetti.



--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

tigre Profilo | Junior Member

Sono riuscito a estrapolare i dati dal modulo cosi:

"uno=request.Form("recapito[]")
elementi = split(uno, ", ")
for i = 0 to ubound(elementi)
response.write elementi(i) & "<br>"
next "

Recapito[] è il nome del campo.
ora, nel modificare il form ho fatto cosi:
Tipo

<td width="77" class="bordo1"><div align="left"><font size="-1" color="#004080" face="Tahoma">Tipo</font></div></td>
<td colspan="3" class="bordo1">
<p class="clone"><select id="TIPO2" name="tipo2" class="select" onchange="showList()" >
<option value="">--Seleziona--</option>
<option value="interno">Interno</option>
<option value="esterno">Esterno</option>
<option value="privato">Privato</option>
</select>
<font size="-1" color="#004080" face="Tahoma">Mittente</font>
<input type="text" class="Stile16" name="mittente" size="25" /></td>
<td width="42" class="bordo1"><font size="-1" color="#004080" face="Tahoma">Citt&agrave;</font></td>
<td width="224" class="bordo1"><input type="text" class="Stile16" name="citta" size="25" />
<a href="#" class="add" rel=".clone">Aggiungi </a></p></td>
-----------------------
cliccando su una option mi apre una popup e selezionando un'altra select (della popup) mi scrive nel campo mittente il valore.
Ora, cliccando su AGGIUNGI mi crea un clone dei campi, ma non mi apre la popup,
Sicuramente perchè dipende dal fatto che selezionando la prima select mi apre questo:
ma come faccio a dire alla seconda select clonata di aprire questa funzione e scrivere il risultato sulla text clonata?
In pratica la prima select si chiama Tipo2, ma la seconda?

<SCRIPT LANGUAGE="JavaScript">
<!--
function showList() {
.....
if (form1.tipo2.value=="interno") {
var width = 350;
var height = 500;
var left = parseInt((screen.availWidth/2) - (width/2));
var top = parseInt((screen.availHeight/2) - (height/2));
sList = window.open("popup_mittenti.asp","list","width=350,height=500,scrollbars,top=" + top + ",left=" + left);
//sList = window.open("popup_mittenti.asp","list","width=350,height=500,scrollbars");
}

alx_81 Profilo | Guru

>Sicuramente perchè dipende dal fatto che selezionando la prima
>select mi apre questo:
ehm.. cosa apre?

>ma come faccio a dire alla seconda select clonata di aprire questa
>funzione e scrivere il risultato sulla text clonata?
non ti seguo.. dovresti provare a mandarmi il file completo, così mi è un po' difficile aiutarti.
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5