Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Chiusura di una finestra dopo submit

    Salve,

    ho aperto un finestra in javascript con il comando:
    <SCRIPT LANGUAGE="JavaScript">
    function openWindow()
    {
    open ("Esami.shtml","new","height=500,width=900,scrollb ars=1,resizable=0,status=0,menubar=0,toolbar=0,loc ation=0")
    }
    </SCRIPT>

    alla fine dell'inserimento dei dati devo inviarli ad una procedura del mio database e contemporaneamente chiudere la finestra.
    Non riesco a trovare il modo di far chiudere la finestra e far partire la procedura, o mi fa una cosa o l'altra.

    Così mi parte solo la procedua:
    <form method="post" action="/4DACTION/P_Prova">
    <input type="submit" name="Submit" value=" Accetta " ></div>
    </form>

    cosa posso fare per risolvere questo problema ?
    Grazie anticipatamente

    vito

  2. #2
    Se ho capito bene, il tuo form è contenuto nella popup, giusto? Quando imposti l'action del form, richiami una nuova pagina da quello che vedo. Potresti usare questa nuova pagina (che è quella che esegue le operazioni di inserimento nel DB) per chiudere la finestra non appena finito. Ti consiglio solo di impostare un timeout, perché a volte, data la velocità, la finestra tenta di chiudersi prima di aver terminato di inviare al DB le informazioni, il che genera una specie di "loop infinito" in IE (e penso anche negli altri browser). Cioè, IE è come se cercasse la pagina senza trovarla mai finché non si fa un refresh o non si chiude il browser.

    Quindi, nella tua pagina "/4DACTION/P_Prova" (mi pare che manchi l'estensione!), puoi inserire uno script all'onload oppure alla fine della pagina, prima di chiudere il <body>, fatto così:

    codice:
    setTimeout('window.close()',2000);
    Questo script aspetta 2 secondi e poi chiude la finestra, dando il tempo alla procedura di inviare tutti i dati al DB.

  3. #3

    'Chiusura di una finestra dopo submit

    P_Prova non è una pagina nuova ma è la procedura 4th Dimension chiamata da 4DACTION /4DACTION/P_Prova

    Il mio form è contenuto come hai capito nella popup, ho provato a scrivere il tuo script in fondo alla pagina ma credo di aver omesso qualcosa perchè il comando mi appare come una scritta normale.

    grazie

    vito

    P.S. non mi è stato possibile inviarti la pagina shtml, se ti è utile fammi sapere come faccio a inviartela

  4. #4
    Se l'hai scritto in fondo alla pagina, prima di chiudere il <body>, devi scriverlo così:

    codice:
    <script type="text/javascript">
    setTimeout('window.close()',2000);
    </script>
    Se invece lo scrivi nel body per eseguirlo al caricamento della pagina:

    codice:
    <body onload="setTimeout('window.close()',2000);">
    Per quanto riguarda 4th Dimension non lo conosco...quello che è importante è che le istruzioni JavaScript di cui sopra siano scritte nella "nuova" pagina che sostituisce quella contenente il form nella popup quando invii i dati del form. In pratica, bisogna che nella popup venga caricata una nuova pagina quando invii il form e sarà questa a contenere lo script. L'alternativa, nel caso il form si invii su se stesso (e quindi la pagina venga solo "aggiornata", senza cambiare), dovresti eseguire all'inzio un controllo (per es. con PHP o con un altro linguaggio lato server) che verifica se è impostato il valore del tasto submit e, in caso positivo, riscrive la pagina con l'aggiunta dello script. Se il tuo tasto submit ha un attributo name infatti, il form spedirà anche quel dato nella forma "name=value" e tu potrai recuperarlo usando il metodo opportuno (a seconda che il form si invii con GET o POST).

  5. #5

    Chiusura di una finestra dopo submit

    Scusami tanto ma sicuramente non sono stato chiaro:

    Io ho una pagina "madre" con dei campi da riempire e poi inviare al
    mio database, parte di questi campi li vorrei valorizzare con il form della popup che apro in javascript

    (la apro perchè mi sono trovato nell'impossibilità di poter nidificare più form)

    questo è lo script che ho scritto nella pagina madre per poter aprire la popup con le combo:
    <SCRIPT LANGUAGE="JavaScript">
    function openWindow()
    {
    open ("Esami.shtml","new"," height=500,width=900,scrollbars=1,resiza
    ble=0,status=0,menubar=0,toolbar=0,locat
    ion=0")
    }
    </SCRIPT>

    nella popup figlia, alla fine del riempimento dei campi devo poter inviare i dati con il metodo post sul mio database e la procedura stessa li invierà alla pagina madre, ma devo poter chiudere la popup

    il problema è che non conosco e non so se è possibile inviare con il metodo <form method="post" action=..........e contemporaneamente chiudere al click di conferma la popup.

    grazie per la cortesia

    vito

  6. #6
    Ahhh!!! Adesso è più chiaro! E' un po' come facevamo noi in un gestionale via web...usavamo le popup come Lookup per popolare dei campi della finestra che le aveva aperte, che a sua volta era una popup. Quando si inviava il form di questa seconda popup, la finestra si chiudeva e i dati erano inseriti nel DB e la pagina principale (che leggeva il DB) veniva aggiornata.

    In questo caso, il codice che ti ho postato rimane valido (sempre col setTimeout(), per dare tempo ai dati di essere inviati). Tuttavia, noi usavamo un sistema particolare per evitare che anche il timeout andasse in errore. In pratica, usavamo un iframe nella popup (che conteneva una pagina vuota). Quando cliccavi su submit, i dati del form venivano inviati in post alla pagina che conteneva il programma che li inseriva nel database. Questa pagina era richiamata dentro l'iframe della popup e conteneva appunto il codice che ti ho postato (non ricordo se all'onload o come script alla fine della pagina). L'unica modifica è che al posto di 'window.close()', dovresti scrivere 'top.close()' (trattandosi di una pagina in un iframe).

    In pratica, avevamo un codice fatto così per la popup:

    codice:
    <iframe src="vuoto.htm" name="Main" frameborder="0" scrolling="no" width="100%" height="150"></iframe>
    
    <form name="Modulo" action="inserisci.php" method="post" target="Main">
    ......
    <input type="submit" name="invio" value="Invia">
    </form>
    Quando cliccavi sul submit, la pagina "vuoto.htm" presente nell'iframe veniva sostituita dalla pagina "inserisci.php" che conteneva lo script per inviare i dati al DB. Alla fine (o all'onload, non ricordo), la pagina "inserisci.php" aveva il famoso script con setTimeout('top.close()',2000), che chiudeva la popup.
    Quello che voglio dire è che cmq devi aggiornare la pagina corrente nella popup per chiuderla, o sostituirla con un'altra pagina per ottenere quello che vuoi. Ci sarebbe l'alternativa di usare lo script che ti ho postato (con window.close()) al submit del form con questo codice:

    codice:
    <form action="..." method="..." onsubmit="setTimeout('window.close()',2000);">
    Purtroppo c'è un problema non da poco: onsubmit viene eseguito PRIMA che il form sia inviato. Quindi, anche se aumenti il valore per setTimeout(), magari portandolo a 5000, ottieni solo di ritardare l'esecuzione di quel codice, ma non sei mai sicuro che nel frattempo i tuoi dati siano stati inviati tutti. Lo stesso avverrebbe se usassi lo stesso script richiamandolo con l'onclick sul pulsante del submit:

    codice:
    <input type="submit" value="Invia" onclick="setTimeout('window.close()',2000);">
    Insomma, la soluzione più "sicura" è fare in modo che sia un'altra pagina (interna o sostituita a quella corrente) a chiudere la popup.

    PS: quando apri la popup, non usare solo open(), ma usa window.open(). open() è un metodo sia dell'oggetto window che dell'oggetto document, quindi è meglio specificare "quale dei due" vuoi aprire.

  7. #7

    Chiusura di una finestra dopo submit

    Grazie per la tua disponibilità, ho provato a mettere in pratica i tuoi consigli ma forse non ho l'esperienza sufficiente per realizzare questa tecnica.
    Proverò in altro modo.

    A presto

    vito

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.