Newsgroup: it.comp.lang.javascript
Titolo: anteprima formail

Salve a tutti come da oggetto,
avrei la necessita di visualizzare un'anterpima
dei dati immessi in un form che ho gia fatto e
funzionante con script php.
e' possibile fare qualcosa in js ?
attendo ringraziandovi anticipatamente


cosa intendi per anteprima?
Se intendi semplicemente un elenco dei campi e delle scelte effettuate
dall'utente ti basta ciclare gli item del form:
ad esempio:
function getFormData(formId){
        var dataString="";
        var frm=document.getElementById(formId);
        var numberElements=frm.elements.length-1;
        for(var i=0; i < numberElements; i++){
           // qui dentro fai quello che devi fare, non so, puoi
crearti un array aprire un pop-up...
           dataString += "Campo: "+frm.elements[i].name+" =
"+frm.elements[i].value+"\n";
        }
        alert("Riepilogo\n"+dataString);
}
Attenzione che questo cicla su tutti gli elementi del form, per questo
motivo c'è "var numberElements=frm.elements.length-1;" il "meno uno"
serve ad escludere quello che si presuppone sia il pulsante di submit
posizionato come ultimo elemento del form.
Non l'ho testato ma dovrebbe andare senza problemi.

 attendo ringraziandovi anticipatamente
cosa intendi per anteprima?
Se intendi semplicemente un elenco dei campi e delle scelte effettuate
dall'utente ti basta ciclare gli item del form:
ad esempio:
function getFormData(formId){
        var dataString="";
        var frm=document.getElementById(formId);
        var numberElements=frm.elements.length-1;
        for(var i=0; i < numberElements; i++){
           // qui dentro fai quello che devi fare, non so, puoi
crearti un array aprire un pop-up...
           dataString += "Campo: "+frm.elements[i].name+" =
"+frm.elements[i].value+"\n";
        }
        alert("Riepilogo\n"+dataString);
}
Attenzione che questo cicla su tutti gli elementi del form, per questo
motivo c'č "var numberElements=frm.elements.length-1;" il "meno uno"


 un'anteprima dei dati che l'utente stesso ha appena inserito nel form.
se stai inviando via post devi farlo server-side, con javascript puoi
leggere solo i dati inviati via get.
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 leggere solo i dati inviati via get.
in php come potrei fare, tipo ..,invece di inviare i dati allo script
attuale che li inoltra , potrei fare in modo che la prima pagina ,quella 
dove c'e' il form,
invii inizialmente i dati ad un'altro script php  che mi restituisca
una pagina(magari in popup) con i dati immessi, e poi li, fare un submit che 
mi invi i dati
e un modifica.
Ti sarei grato se mi riuscissi a dare una mano perche' non saprei proprio 
come fare.

 come fare.
l'unica mano che posso darti è dirti che sei completamente OT e di
rivolgerti al newsgroup di php, dove sicuramente ne sapranno più di me su
questo linguaggio...
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

ho infatti gia' provveduto ma ancoa non ho rivcevuto
riscontro
grazie comunque  !!
ciao e buon lavoro


beh, c'è un sistema più efficiente, poi dipende anche da quale cura
grafica vuoi, gli alert non è che siano proprio bellissimi, puoi
comunque rimanere client-side fino al momento del post (anche aprendo
un pop-up, ma l'output dovresti gestirlo tutto in javascript,
fattibile ma non troppo divertente se non hai pratica torna
sicuramente più comodo usare php)
Rimanendo in topic puoi fare così:
- metti un id al tuo form
- trasorma il pulsante di submit in un button normale, sul suo onclick
lanci una funzione javascript di convalida, fai quello che devi fare
(qui potresti fare un primo controllo della validità dei dati clent-
side prima di inviarli al server, -cosa buona e giusta-), fai un alert
e forzi il submit.
Esempio
HTML:
<form id="formdati" ... >
[...]
<input type="button" onclick="checkForm();" />
</form>
funzioni:
function checkout(){
        var dataString="";
        var frm=document.getElementById("formdati");
        var numberElements=frm.elements.length-1;
        for(var i=0; i < numberElements; i++){
           dataString += "Campo: "+frm.elements[i].name+" =
"+frm.elements[i].value+"\n";
        }
        if (confirm("Riepilogo\n"+dataString+"\n\nSei sicuro di voler
inviare questi dati?")) frm.send(); else return false;
}
questa funzione (ancora una volta l'ho scritta di getto senza testarla
ma dovrebbe essere ok) ti stampa una finestrella con il riassunto
delle coppie nome-campo/dato-inserito e al fondo ti chiede se vuoi
procedere con l'invio. Ti vengono proposti i due pulsanti si/no e se
premi si formi manualemente il post del form (frm.send();) altrimenti
non fa nulla, l'utente si ritrova davanti lo stesso form di prima e
può modificare i dati che ha immesso.
Il tutto senza passare da più file, memorizzare i valori etc etc.

 e forzi il submit.
E se l'utente preme il tasto INVIO mentre si trova su un textfield?
Perché usare onclick su un button quando si può usare onsubmit nel form?
-- 
Nando [?]
Apostolo della Prova

 ha scritto:

in alcuni casi avevo riscontrato una problematica che in questo
momento non ricordo, però giustamente è possibile modificare la
funzione di prima
HTML:
<form id="formdati" ... onsubmit="checkForm();>
[...]
<input type="submit" ...
</form>
e nella funzione di prima basta modificare:
if (confirm("Riepilogo\n"+dataString+"\n\nSei sicuro di voler inviare
questi dati?")) frm.send(); else return false;
in
return (confirm("Riepilogo\n"+dataString+"\n\nSei sicuro di voler
inviare questi dati?"));