Chiudere finestra popup dopo evento

di Anonimizzato26775 il
5 risposte
Ciao a tutti,

ecco la situazione che mi si presenta: richiamandolo da un file html, creo in una finestra popup un form che invia dati ad una certa mail; effettuato l'invio dei dati, all'interno del popup faccio apparire un messaggio di invio eseguito correttamente (ciò che visualizzo all'interno del popup è creato tramite PHP). Ho la necessità di far chiudere in automatico dopo un tot di secondi il popup, dopo che è stato visualizzato il messaggio di invio corretto, cioè: compilo il form, clicco su invia dati, appare il messaggio di invio corretto e poi si deve chiudere il popup.

Sapreste aiutarmi? Grazie!

P.S.: cosa secondaria: come dò uno stile alle pagine che creo tramite PHP come quello che appunto ho nel popup?

5 Risposte

  • Andiamo con ordine,

    non avendo sott'occhio il tuo codice non posso sapere qual'è l'evento che usi per aprire il popup, ma un metodo veloce per chiudere una finestra è
    
    var formwin = popup che usi per il form
    function closeWin() {
      formwin.close();
    }
    
    seconda cosa: lo puoi fare semplicemente con css, che problema riscontri?
  • Grazie per la risposta, mi metto a provare quello che mi hai suggerito.
    "Popup che usi per il form"... cioè?

    Il popup lo apro con l'evento onClick su un "button": ho creato una funzione che usa "window.open" --> window.open("form.html", "nome_finestra", "dimensioni_popup");

    Per il css ho questo problema: il PHP che manda i dati ad una mail mi crea anche il messaggio di corretto invio. Ho quindi il file inviodati.php con all'interno una cosa tipo $messaggiook = ''invio dati riuscito'; io vorrei far scrivere "invio dati riuscito" con uno stile mio, però non so dove scrivere questo stile.
  • Semplicemente al
    $messaggiook = 'invio dati riuscito';
    lo fai diventare
    $messaggiook = '<div class="msg-ok">' . 'invio dati riuscito' . "</div>";
    così da css puoi usare la classe per formattare il messaggio
  • Linko il foglio di stile nel file PHP in questo modo?

    EDIT li inserisco in questo modo all'interno del file PHP:
    echo '<link rel="stylesheet" type="text/css" href="stile.css">';

    var formwin = popup che usi per il form
    function closeWin() {
    formwin.close();
    }
    popup che usi per il form........ cioè?
  • Vi metto il codice che ho scritto:

    index.html
    <html>
    <head>...</head>
    <body>
    <button onClick="apriForm()">Form</button>
    <script>
    function apriForm(){
    var myWindow = window.open("form.html", "Form", "width=600,height=400");
    }
    </script>
    </body>
    </html>
    form.html
    <html>
    <head>...</head>
    <body>
    <form action="inviodati.php" method="post">
    <label for="name">Nome</label>
    <input name="name">
    <label for="surname">Cognome</label>
    <input name="surname">
    <label for="email">e-Mail</label>
    <input name="email" type="email">
    <input id="submit" name="submit" type="submit" value="Invia" onClick="chiudi()">
    </form>
    <script>
    function chiudi(){
    window.setTimeout('window.close();', 2000);
    }
    </script>
    </body>
    </html>
    inviodati.php
    <?php
    $mailto = 'mail_a_cui_inviare_i_dati';
    $subject = 'oggetto_della_mail;
    $error_message = 'Invio non riuscito...';
    $success_message = 'Invio dati eseguito correttamente!';
    $messaggio = $messaggio ."Nome: " .$_POST['name'] ."\n";
    $messaggio = $messaggio ."Cognome: " .$_POST['surname'] ."\n";
    $messaggio = $messaggio ."e-Mail: " .$_POST['email'] ;
    if (mail($mailto, $subject, $messaggio)) {
    echo($success_message);
    }
    else {
    echo($error_message);
    }
    ?>
    In questo modo funziona e chiudo il popoup dopo 2 secondi, ma vorrei che i 2 secondi iniziassero a partire da quando appare il messaggio di "invio eseguito correttamente" o "invio non riuscito" e non da quando premo sul pulsante per inviare i dati.
    Se aumento il tempo di attesa (cosa che comunque non va bene perchè non posso sapere i tempi di invio) il form passa all'indirizzo PHP e non viene più chiuso il popup.
Devi accedere o registrarti per scrivere nel forum
5 risposte