Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Visualizzare un popup all'apertura di una pagna (jquery)

    Salve a tutti, spero di scrivere nella sezione giusta...
    Ho poca dimestichezza con jquery, spero possiate aiutarmi a risolvere il piccolo problema:

    Quello che devo fare è visualizzare un div (un popup) all'apertura di una pagina, verificando però prima una condizione, andando a leggere una variabile che ho in sessione, valorizzata da una servlet java.
    Ho già fatto in modo, in un'altra pagina, che venga visualizzato un popup a seguito di un click, e in quel caso non ho problemi.


    il div è questo:

    <div id="dialog-confirm" title="Inserimento Progetto">
    <table>
    <tr>
    <td>[img]../../css/images/Help-icon.png[/img]</img></td>
    <td>

    Progetto inserito correttamente.</p></td>
    </tr>
    </table>
    </div>


    E questa è la funzione jquery:

    <script>
    $(function() {
    $("a#conferma").click(function(){
    $('#overlay').fadeIn('fast');
    $("div#menu_navigazione").css("display","none");
    $('#dialog-confirm').fadeIn('slow');
    $('#dialog-confirm').data('link', this).dialog('open');
    return false;
    });

    $( "#dialog-confirm" ).dialog({
    resizable: false,
    modal: true,
    autoOpen: false,
    buttons: {
    "Ok": function() {
    $("div#menu_navigazione").css("display","block") ;
    $('#overlay').fadeOut('fast');
    $( this ).dialog( "close" );
    }
    }
    });
    });
    </script>

    Come faccio a chiamare la funzione jquery dopo aver verificato il mio valore?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Non devi richiamarla, devi semplicemente renderla 'dinamica' in base al valore che recuperi dalla sessione, se per esempio il valore di sessione è un booleano puoi fare cosi:

    codice:
    $( "#dialog-confirm" ).dialog({
     resizable: false,
     modal: true,
     autoOpen: <%=session.getAttribute("attributoSessione")%>,
     buttons: {
     "Ok": function() {
     $("div#menu_navigazione").css("display","block");
     $('#overlay').fadeOut('fast');
     $( this ).dialog( "close" );
     }
     }
     });

  3. #3
    provo immediatamente e ti dico!

  4. #4
    No non funziona, continuo a sbagliare.
    Lo script adesso è così:

    <script>
    $( "#dialog-confirm" ).dialog({
    resizable: false,
    modal: true,
    autoOpen: <%=(Boolean) session.getAttribute("popup")%>,
    buttons: {
    "Ok": function() {
    $("div#menu_navigazione").css("display","block") ;
    $('#overlay').fadeOut('fast');
    $( this ).dialog( "close" );
    }
    }
    });

    </script>


    Quello che succede (ma succedeva già prima) è che il div è sempre visibile ma non come dovrebbe, nel senso che così come ho fatto in un'altra pagina, dovrebbe venir fuori il popup al centro della pagina con lo sfondo oscurato. E non fa niente di tutto questo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Cosi non va bene perche lo stai castando a Boolean(che è un oggetto non un tipo primitivo). Controlla sembre quello che viene restituito al browser per vedere se c'è qualche errore nella codice java. Ti basta controllare il sorgente della pagina(tasto destro->html).

    Per sicurezza prova a dividere le 2 parti, poi al massimo si sistema, fai cosi:

    codice:
    <script>
    <%if(((Boolean) session.getAttribute("popup")).booleanValue()){%>
    autoOpen = true;
    <%}else{%>
    autoOpen = false;
    <%}%>
    
    $( "#dialog-confirm" ).dialog({
     resizable: false,
     modal: true,
     autoOpen: autoOpen,
     buttons: {
     "Ok": function() {
     $("div#menu_navigazione").css("display","block");
     $('#overlay').fadeOut('fast');
     $( this ).dialog( "close" );
     }
     }
     });
    </script>

  6. #6
    Così facendo però, guardando il sorgente della pagina, vedo

    autoOpen: autoOpen

    e non true/false

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    è normale autoOpen è una variabile js, quello che ti interessa è sapere come viene valorizzata, cioè se nel sorgente html vedi

    autoOpen=false;

    oppure

    autoOpen=true;

    questo in base a come sia valorizzata la variabile di sessione.

  8. #8
    la variabile è valorizzata correttamente
    il fatto è che indipendentemente dal valore della variabile, il div viene visualizzato sempre

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Ho fatto un po' di prove, se il parametro autoOpen è valorizzato a false, la dialog non la vedo

    Questo quanto scritto nella documentazione jquery:

    When autoOpen is true the dialog will open automatically when dialog is called. If false it will stay hidden until .dialog("open") is called on it.

  10. #10
    sì risulta anche a me, in un'altra pagina ho fatto questa funzione

    <script>
    $(function() {
    $("a#elimina_progetto_docs").click(function(){
    $('#overlay').fadeIn('fast');
    $("div#menu_navigazione").css("display","none");
    $('#dialog-confirm_docs').fadeIn('slow');
    $('#dialog-confirm_docs').data('link', this).dialog('open');
    return false;
    });

    $( "#dialog-confirm_docs" ).dialog({
    resizable: false,
    modal: true,
    autoOpen: false,
    buttons: {
    "Elimina": function() {
    $("div#menu_navigazione").css("display","block") ;
    $('#overlay').fadeOut('fast');
    $( this ).dialog( "close" );
    var path = $(this).data("link").href;
    $(location).attr("href", path);
    },
    "Annulla": function() {
    $("div#menu_navigazione").css("display","block") ;
    $('#overlay').fadeOut('fast');
    $( this ).dialog( "close" );
    }
    }
    });
    });
    </script>

    Il popup viene visualizzato al click di un pulsante, e funziona correttamente, compreso autoOpen.
    Devo capire perchè

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.