Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344

    jQuery dialog: aprire solo in condizione (PHP)

    In PHP ho un form. Al submit ricarico la stessa pagina e faccio delle verifica impostando per ogni controllo la variabile $note.

    Solo in caso questa variabile sia diversa da '' vorrei far visualizzare il div id="dialog" con dentro la variabile.

    Questo il codice per inizializzare il div:

    Codice PHP:
            // Dialog
            
    $("#dialog").dialog({
                
    resizablefalse,
                
    height:140,
                
    modaltrue,
                
    autoOpen false,
                
    overlay: {
                    
    backgroundColor'#000',
                    
    opacity0.5
                
    },
                
    buttons: {
                    
    OK : function() {
                        $(
    this).dialog('close');
                    },
                    
    'Cancella tutto': function() {
                        
    alert('callback lanciato!')
                        $(
    this).dialog('close');
                    }
                
                } 
    Questo il div:

    Codice PHP:
        <div id="dialog">
            <?php echo $note?>
        </div>
    Questo invece il codice che non mi funziona:

    Codice PHP:
    if ($nota != '') { echo "<script type=\"text/javascript\">$('#dialog').dialog('open');</script>"; } 
    Ho provato anche a scrivere direttamente:
    <script type="text/javascript">$('#dialog').dialog('open');</script>

    Ma la modale non si apre.

    Se invece imposto autoOpen a True funziona, per cui il codice è corretto.

    L'errore credo sia nella metodo di chiamata.

  2. #2
    Stai attento:
    codice:
        <div id="dialog">
            <?php echo $note; ?>
        </div>
    e ...
    codice:
    if ($nota != '') { echo "<script type=\"text/javascript\">$('#dialog').dialog('open');</script>"; }
    Differenze?

    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    No no scusa nel copiare ho sbagliato ma nel codice è giusto. Inoltre come scritto ho provato a farlo anche senza condizione PHP e il risultato è lo stesso.

  4. #4
    Metti l'eco dello script:

    Codice PHP:
    <script type="text/javascript">$('#dialog').dialog('open');</script> 
    nella funzione $(document).ready:

    Codice PHP:
            <script>$(document).ready(function(){
                
                $(
    "#Dialog").dialog("open");
            });
            
    </script> 

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Se metto come dici tu nell'header me lo apre direttamente ( e funziona, basti infatti che nel primo codice che vedi setti autoOpen:true.

    Quello che voglio invece è che il dialog si apra dopo (solo in caso di una particolare condizione).

    In teoria richiamando il metodo nel corpo (lascia perdere la momento la condizione PHP) dovrebbe funzionare.

    Il codice js è corretto (quello per l'apertura)?.

  6. #6
    No aspetta, io dico che devi lasciare tutto come hai fatto perché va bene così.
    La differenza è che la chiamata per l'apertura del dialog, nel caso una condizione si avverasse, deve essere fatta quando il DOM è stato caricato, cioè nel metodo ready:

    Codice PHP:
    <?php date_default_timezone_set("Europe/Rome"); ?>
    <?php 
        $condition 
    true;
        
    $dialogStr "$('#Dialog').dialog('open');";
    ?>
    <html>
        <head>
            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.5.custom.css"/>        
        
            <script src="scripts/jquery-1.4.2.min.js"></script>                
            <script src="scripts/jquery-ui-1.8.5.custom.min.js"></script>                
            <script>            
                $(document).ready(function(){    
                    $("#Dialog").dialog({
                        autoOpen: false        
                    });
                });        

            </script>
        </head>
        <body>        
            <?php 
                
    if($condition
                {    
                    echo 
    "<script>";
                    echo 
    "$(document).ready(function(){";
                    echo 
    $dialogStr;
                    echo 
    "});";
                    echo 
    "</script>";
                }
            
    ?>
            <div id="Dialog">Ciao</div>
        </body>
    </html>
    Così. Prova a usarlo così e ad usarlo commentando le righe

    codice:
    echo "$(document).ready(function(){";
    e

    codice:
    echo "});";

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Eccomi.
    Avevi perfettamente ragione e tutto funziona.
    L'errore stava proprio nel fatto che inizializzavo (con .ready) nell'header e credevo bastasse quello. Invece era necessario che il documento fosse caricato anche per il metodo open.

    grazie

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.