2010-05-29 12 views
54

Come chiudere jQuery Dialog all'interno della finestra di dialogo senza utilizzare il pulsante di chiusura?Come chiudere jQuery Dialog all'interno della finestra di dialogo?

All'interno della finestra di dialogo ui è una semplice richiesta di modulo e in caso di invio riuscito, la finestra di dialogo ui chiude e rinfresca automaticamente la pagina padre.

<script type="text/javascript"> 
     $(document).ready(function() { 
      $("#form-dialog").dialog({ 
       autoOpen: true, 
       modal: true, 
       width: 200, 
       draggable: true, 
       resizable: true 
      }); 
     }); 
    </script> 


    <div id="form-dialog" title="Form Submit"> 
    <form action="default.aspx" method="post"> 
    <input type="text" name="name" value=" " />  
    <input type="submit" value="submit" /> 

    <a href="#" id="btnDone">CLOSE</a> 

    <script type="text/javascript"> 
    $(document).ready(function() { 
     $("#btnDone").click(function() { 
      $(this).dialog('close'); 
     }); 
    }); 
    </script> 

    </form> 
    </div> 

-imperialx

risposta

51

si può chiudere a livello di codice chiamando

$('#form-dialog').dialog('close') 

ogni volta che vuoi.

+0

Ma il tag del modulo si trova all'interno della finestra di dialogo ui. Nessun file jquery all'interno della finestra di dialogo ui, solo una semplice sottomissione tag. Come posso usare $ ('# form-dialog'). Close() all'interno della # forma-finestra di dialogo? È come chiudere se stesso dopo aver fatto clic su qualcosa o si è verificato un timer di attesa all'interno della finestra di dialogo ui. – imperialx

+0

se si utilizza jquery per aprire la finestra di dialogo, è possibile utilizzare jquery per chiuderlo. nella riga proprio sotto dove dichiari la finestra di dialogo, imposta '$ ('# mySubmitButton'). live ('click', function() {mySubmitFunction(); $ ('# form-dialog'). close();}); – Jason

+0

Sì, ma che dire di quando sono all'interno della finestra di dialogo? Penso che l'equivalente di questo è qualcosa come $ (window) .unload() in cui il modulo a comparsa si chiude automaticamente da solo anziché fare clic sul pulsante di chiusura jquery-ui-dialog. – imperialx

14

È necessario

$('selector').dialog('close'); 
+0

Ciao redsquare, ho aggiunto alcune righe sul mio codice sopra, posso sapere perché non chiuderà la finestra di dialogo? Come puoi vedere, il pulsante di chiusura si trova all'interno della finestra di dialogo ui. Grazie. – imperialx

+0

perché nel tuo caso questo si riferisce al pulsante non la finestra di dialogo – redsquare

+0

cambia $ (this) in $ ("# form-dialog") – redsquare

0

     $(document).ready(function() { 
      $("#form-dialog").dialog({ 
       autoOpen: true, 
       modal: true, 
       width: 200, 
       draggable: true, 
       resizable: true, 
       buttons: { 
        "Close": function() { 
         $("#idDialog").dialog("close"); 
        } 
       } 
      }); 
     }); 

Questo vi farà un pulsante per chiudere. puoi anche chiamare la funzione close

$("#idDialog").dialog("close"); 

in alcune funzioni per farlo. o anche in un pulsante/a EDIT

< a href="javascript:void(0);" id="btnDone" 
           onClick="$("#idDialog").dialog("close");">CLOSE</a> 

: avete bisogno di questo per includere il dialogo in forma:

open: function (type, data) { 
      $(this).parent().appendTo($("form:first")); 
     } 
59

Try This

$(this).closest('.ui-dialog-content').dialog('close'); 

Sarà chiudere la finestra dentro.

+1

eccellente. esattamente quello che volevo! – Somedeveloper

2

sostituire una stringa di

$("#form-dialog").dialog('close'); 

$ (this) qui significa un altro oggetto $ ("# btnDone")

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#form-dialog").dialog({ 
      autoOpen: true, 
      modal: true, 
      width: 200, 
      draggable: true, 
      resizable: true 
     }); 
    }); 
</script> 


<div id="form-dialog" title="Form Submit"> 
<form action="default.aspx" method="post"> 
<input type="text" name="name" value=" " />  
<input type="submit" value="submit" /> 

<a href="#" id="btnDone">CLOSE</a> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#btnDone").click(function() { 
//I've replaced next string 
// $(this) here means another object $("#btnDone") 
    $("#form-dialog").dialog('close'); 
    }); 
}); 
</script> 

</form> 
</div> 
6
$(this).parents(".ui-dialog-content").dialog('close') 

semplice, mi piace per assicurarsi che I don' t:

  1. valori di dialogo #id.
  2. Chiudi tutte le finestre di dialogo.
0

L'aggiunta di questo collegamento nel aperta

$(this).parent().appendTo($("form:first")); 

funziona perfettamente.

6

Chiudi dal IFRAME all'interno di una finestra di dialogo:

window.parent.$('.ui-dialog-content:visible').dialog('close'); 
3

Dopo aver controllato tutte queste risposte sopra, senza fortuna, il codice folling lavorato per me per risolvere il problema:

$(".ui-dialog").dialog("close"); 

Forse questo sarà anche un buon tentativo se cercate alternative.

Problemi correlati