Ho un problema da cui non riesco ad uscire...
Praticamente, avendo una pagina con centinaia di schede diverse, ciascuna delle quali ha (tra l'altro) uno slide che, aperto, mostra un form d'iscrizione ad una newsletter, per evitare di ripetere il codice necessario centinaia di volte ho adottato la soluzione di far sì che - all'apertura dello slide - al suo interno viene creato al volo il form.
Per fare questo, utilizzo questo codice:
laddove openDiv è la variabile che identifica quale slide viene aperto.codice:<form action='newsletter.php' method='post' name='newslett' id='newslett'> <span style='font-size:1.25em'>Iscriviti alla nostra newsletter, riceverai via email le nostre offerte segrete! E per te un omaggio speciale!</span><br> <input type='text' class='basic2' style='width:94%;font-size:1.25em' placeholder='Scrivi la tua e-mail - necessario' name='newsl' id='newsl2' /><br> <input type='text' class='basic2' style='width:94%;font-size:1.25em' placeholder='Scrivi il tuo nome e cognome' name='newsl_who' id='newsl_who2' /><br> <input type='text' class='basic2' style='width:94%;font-size:1.25em' placeholder='Scrivi il tuo telefono' name='newsl_tel' id='newsl_tel2' /><br /> <input type='checkbox' name='flag' style='width:20px;font-size:1.25em' value='si' /> <span style='font-size:10px'>Accetto le condizioni di <a href='privacy.php' target='_blank'>privacy</a></span><br /> <input name='kind' type='hidden' value='os'> <input name='datadest' id='datadest' type='hidden' value='"+openDiv+"' /><br /> <input name='sub' id='sub' type='submit' value=' INVIA ' class='buttonBlue' /></fo
E fin qui, tutto bene.
Il problema sorge perchè il form invia i dati alla pagina di destinazione (newsletter.php) via Ajax.
Nel caso di un errore (un campo necessario non compilato, o un indirizzo email errato) viene mostrato correttamente il messaggio di errore, ma:
- se a questo faccio seguire nuovamente il codice del form, scritto nella pagina newsletter.php, poi cliccando nuovamente il pulsante di invio viene caricata questa pagina, e non solo l'esito come feedback nella pagina iniziale
- se invece voglio dare la possibilità di tornare indietro, usando la funzione window.history.back, o semplicemente history.back, non torna al form precedentemente compilato ma carica la pagina precedente
Come ne posso uscire?
Provo cmq a riassumere la sequenza:
- l'utente clicca per aprire uno slide
- lo slide si apre, ed al suo interno viene creato (vedi codice sopra) il form
- l'utente clicca sul pulsante d'invio, ed una funzione JQuery invia i dati alla pagina di destinazione
- se è tutto okay, questa pagina restituisce un messaggio di conferma e non c'è nessun problema
- se invece c'è un problema (un campo necessario non compilato, una mail errata), oltre a mostrare il messaggio di errore devo dare all'utente la possibilità di correggere, quindi devo riproporgli il form:
1) non so come farlo tornare indietro, perchè la funzione di back non ricrea il form nello slide ma va alla pagina precedente
2) se il form lo faccio creare dalla stessa pagina che ha gestito la chiamata Ajax, quando poi l'utente corregge ed invia nuovamente, ad essere caricata per intero e questa pagina, e non quella da cui si è avviata l'operazione

Rispondi quotando
