2013-04-23 22 views
11

Sto sviluppando una finestra di dialogo Jquery e ho trovato che la finestra di dialogo era nascosta quando ho impostato Modal: true. Quando si imposta Modal: false, ho trovato che tutto funziona come previsto. Spero che qualcuno possa aiutarmi.La finestra di dialogo era nascosta dietro la sovrapposizione quando Modale: true nella finestra di dialogo Jquery in ASP.net

<asp:Button ID="btnOpendialog" runat="server" Text="Button" ClientIDMode="Static" /> 

<div id="dialog"> 

<h1>Test</h1> 
    <asp:Button ID="btnClickfromDialog" runat="server" Text="Button" /> 

</div> 

$(function() { 
    $("#btnOpendialog").click(function (e) { 
     $("#dialog").dialog("open"); 
     return false; 
    }); 

    $("#dialog").dialog({ 
     height: 200, 
     modal: true, 
     autoOpen: false, 
     open: function() { 
      $(this).parent().appendTo($("form:first")); 
     }        
    }); 
}); 

risposta

14

Ho risolto. Non ci sono molte persone che si lamentano di questo problema. Sono solo io? Ad ogni modo, ecco come l'ho risolto. Abbastanza semplice quando sai come.

.ui-widget-overlay 
{ 
     z-index: 0; 
} 
+1

Bello! Ha funzionato per me, anche se ho dovuto usare! Importante per assicurarsi che avesse la precedenza. –

+2

per gli altri utenti di questa pagina, come menzionato da @Eddie R, dovresti usare la nuova API '$ (" .selector ") .dialog ({appendTo:" #someElem "});' – Homer

+0

Un vecchio commento, ma il la soluzione fornita da Homer è IMPRESSIONANTE !!! –

-1

È possibile creare un jsFiddle per ricreare questo problema al di fuori del proprio ambiente? In caso contrario, ecco alcune idee al largo della parte superiore della mia testa:

Metti il ​​tuo javascript all'interno di un blocco pronto documento, in questo modo:

$(document).ready(function() { 
// Your javascript here... 
}); 

Change btnOpendialog per essere un controllo server non-ASP.NET . Poiché tutto ciò che fa è aprire la finestra di dialogo jquery, non ha bisogno di essere un controllo server. Cambiare a questo:

<input type="button" id="btnOpendialog" value="Button" /> 
+0

$ (function() {è uguale a $ (document) .ready Chiaro .. non sarebbe fare la differenza per trasformare il pulsante in ogni caso ho bisogno di pulsanti asp.net Grazie per. il tuo aiuto L'ho già sistemato – lawphotog

+0

Non sapevo che fossero la stessa cosa Grazie per aver condiviso! :) – ClearCloud8

6

È necessario smettere di usare appendTo come questo e utilizzare la nuova opzione di dialogo "appendTo"

come questo:

$(".selector").dialog({ appendTo: "#someElem" }); 

Tratto da documentazione jQuery-ui http://api.jqueryui.com/dialog/#option-appendTo

+0

Ciao Eddie .. Non ne ero consapevole. o è una cosa nuova? Comunque grazie. .. Ben fatto. – lawphotog

+0

sì, nell'interfaccia utente jQuery :) –

6

Ho provato la risposta accettata e sembrava funzionare in alcune situazioni, ma non in altre. Utilizzando la stessa idea, questo è il codice mi si avvicinò con questo codice ...

.ui-dialog { z-index: 9999 !important; }

... che si basa sul fatto che lo z-index di .ui-widget-overlay è 9998.

Inoltre, per risolvere il problema in cui la sovrapposizione non copre l'intera altezza della pagina (come .ui-widget-overlay ha solo un'altezza di 1000%), sono arrivato fino a questo:

.ui-widget-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; }

+1

Questo ha funzionato per me! – CodeGuyRoss

+0

Entrambi gli override hanno funzionato per me attraverso i browser - grazie ban-geoengineering. – PiggyMacPigPig

1

All I era necessario z-index:1 applicato a ui-dialog. Non c'era z-index Potrei applicare a ui-widget-overlay per fare questo lavoro.

Lo sto facendo in Wordpress inclusi gli script 'jquery', 'jquery-ui-core', 'jquery-ui-dialog'. Ecco il mio css rilevanti:

.ui-widget-overlay {  
    position: absolute; 
    top: 0; 
    left: 0; 
    width:100%; 
    height:100%; 
    background: #aaaaaa; 
    opacity: 0.3; 
}  

.ui-dialog {  
    background-color: #FFFFFF;  
    overflow: hidden; 
    z-index:1; 
} 
Problemi correlati