Ciao ragazzi,
mi spiego subito: sto realizzando un piccolo gestionale web based per un azienda, in una certa pagina ho un form molto complesso (nel senso di lungo da compilare) che mi richiede una miriade di controlli che faccio 1. da JS durante la compilazione e 2. successivamente nella pagina PHP dove poi tutti i dati vengono inviati al db.
Arrivati alla pagina php, se sfortunatamente uno dei controlli mi risulta non valido devo ovviamente far tornare l'utente al form e notificare cosa è successo.
Quello che mi preme però è non perdere i dati che l'utente aveva già inserito.
All'inizio avevo pensato di reindirizzare l'utente ad una pagina javascript che simulasse l'evento "indietro" del browser. Tuttavia, siccome il form può essere letteralmente "modificato" dall'utente, nel senso che egli può aggiungere/sottrarre/nascondere un sacco di campi attraverso delle funzioni js, tornando indietro si vanno a perdere comunque tutti questi dati (o i campi) inseriti dinamicamente e che non sono di default del form.
Dopo qualche ricerca però ho trovato un interessante "trucco", questo:
che in teoria dovrebbe anche questo simulare il tasto indietro del browser, in pratica invece mi fa rimanere nella stessa pagina! Quindi il form rimane ESATTAMENTE come era, il che è perfetto!codice://nella pagina php, se viene trovato un errore: header("Location: javascript://history.go(-1)"); exit;
Facendo dei test ho notato che praticamente qualsiasi funzione JS io passi a quell'header() ottengo sempre lo stesso risultato, ovvero la pagina rimane ferma dov'era (per ora sono riuscito a fare test solo con google chrome ma spero ardentemente che questo trucchetto sia crossbrowser).
Il problema che nasce ora quindi è capire come notificare all'utente qual'è il dato errato così che possa intervenire e rivalidare il form.
Quindi volevo sapere se esiste un modo, oltre che per fermare la pagina come la funzione sopra citata, di far eseguire un js (ad esempio un semplice alert)
Spero di essere stato chiaro, attendo con ansia qualche risposta, grazie!
Vincenzo

).
Rispondi quotando