vecio88 ha scritto:
Salve a tutti. Vi espongo il mio problema. Ho creato una pagina in cui inserire dei dati per la registrazione e fin qui tutto ok. Poi ho creato uno script in js che controlla l'esattezza dei dati e fin qui tutto ok. Ora devo fare in modo che se i dati son corretti mi apre un'altra finestra di riepilogo con tutti i dati presi dalla prima pagina .html.. Ora la domanda principale è come faccio a dire al DOM che mi servono i dati della prima pagina e non di quella che devo creare??
Ciao.
Se ho capito bene, tu vorresti che una volta confermati i dati nel modulo si apra
una seconda finestra contenente tali dati a riepilogo.
Le finestre possono essere relazionate fra loro tramite Javascript solo se è stato Javascript stesso ad iniziare tale relazione (ad esempio: aprendo un popup, Javascript mette in relazione la nuova finestra e il suo DOM come figlia della pagina principale).
Nel caso tu voglia fare una pagina molto molto semplice, ti consiglierei di procedere in un modo simile al seguente:
function finestraRiepilogo() {
// Istanza DOM del modulo contenente i dati
var form = document.getElementById("formDati");
// Creo variabile vuota: conterrà il testo della nuova pagina
var html = "";
// Ciclo fra i campi del modulo, riempo la variabile precedente con i valori
for (i=0; i<form.elements.length; i++)
html += "<p><strong>"+form.elements[i].name+":</strong> "+form.elements[i].value+"</p>\n";
// Apro e assegno l'istanza di una nuova finestra popup (larghezza e altezza 500px)
/* NB: il primo parametro di open() è lasciato vuoto e apre about:blank
ma inserendovi invece un'URL viene caricata una pagina da file
ovviamente raggiungibile e modificabile via DOM */
var wind = window.open("","","width=500,height=500");
// Scrivo nell'HTML della nuova finestra la variabile riempita prima
wind.document.write(html);
// Metto a fuoco la nuova finestra. Et voilà!
wind.focus();
}
Dopodiché non rimane che richiamare la funzione
finestraRiepilogo() al click di un pulsante o all'invio del modulo.
Se invece avevi intenzione di aprire una nuova pagina MOLTO più complessa di così ma pur sempre senza scrivere subito i dati dell'utente sul database, potresti pensare di unire Javascript ad un linguaggio di programmazione lato server e collegare due pagine tramite cookie.
Per esempio, la stessa funzione di prima non aprirà più nessuna pagina, setterà invece un cookie con i dati della sessione:
function finestraRiepilogo() {
// Istanza DOM del modulo contenente i dati
var form = document.getElementById("formDati");
// Ciclo fra i campi del modulo, riempo la variabile precedente con i valori
for (i=0; i<form.elements.length; i++) {
// Nome del cookie dinamico in formato array
var cookiename = "invioDati["+form.elements[i].name+"]";
// Imposto la scadenza del cookie (1 giorno)
var exdate = new Date();
exdate.setDate(exdate.getDate()+1);
// Setto un nuovo cookie con nome e scadenza generati prima e validità sulla root
document.cookie = cookiename+"="+escape(utf8_encode(form.elements[i].value))+";expires="+exdate.toUTCString()+";path=/";
}
}
A questo punto il cookie potrà essere letto ed utilizzato da uno script (sullo stesso dominio) per poter creare meccanismi più complessi e visualizzare tali dati.
Più specifico non riesco ad essere in quanto mi hai dato pochi dati su cui riflettere, ma spero di averti dato qualche idea
Ciao!