2013-04-23 13 views
11

Zajmuję się dialogiem Jquery i stwierdziłem, że okno dialogowe było ukryte, gdy ustawiłem Modal: true. Podczas ustawiania Modal: false, stwierdziłem, że wszystko działa zgodnie z oczekiwaniami. Mam nadzieję, że ktoś może mi pomóc.Okno dialogowe zostało ukryte za nakładką, gdy Modal: true w oknie dialogowym Jquery w 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")); 
     }        
    }); 
}); 

Odpowiedz

14

Naprawiłem to. Niewiele osób narzeka na ten problem. Czy to tylko ja? W każdym razie, oto jak to naprawiłem. Bardzo proste, kiedy wiesz jak.

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

Nice one! Pracowałem dla mnie, chociaż musiałem użyć! Ważne, aby upewnić się, że ma pierwszeństwo. –

+2

dla innych osób przychodzących na tę stronę, jak wspomniał @Eddie R., powinieneś użyć nowego API '$ (" .selector ") .dialog ({appendTo:" #someElem "});' – Homer

+0

Stary komentarz, ale rozwiązanie podane przez Homera jest NIESAMOWITE !!! –

-1

Czy można utworzyć aplikację jsFiddle, aby odtworzyć ten problem poza środowiskiem? Jeśli nie, oto kilka pomysłów z góry na głowie:

Połóż JavaScript wewnątrz dokumentu gotowego bloku, tak jak poniżej:

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

Zmień btnOpendialog być non-ASP.NET kontrola serwera . Ponieważ wszystko, co robi, jest otwarte okno dialogowe jquery, nie musi to być kontrola serwera. Zmień to na:

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

$ (function() {jest taka sama jak $ (document) .ready Wyczyść .. to nie zrobi różnicy, aby zmienić przycisk zresztą muszę przycisków asp.net Dzięki za. twoja pomoc Naprawiłem to już – lawphotog

+0

Nie wiedziałem, że to to samo. Dzięki za udostępnienie! :) – ClearCloud8

6

Musisz przestać używać appendTo tak i skorzystać z nowej opcji dialogowe "appendTo"

tak:

Zrobione z dokumentacji jQuery-UI
$(".selector").dialog({ appendTo: "#someElem" }); 

http://api.jqueryui.com/dialog/#option-appendTo

+0

Cześć Eddie .. Nie wiedziałem o tym. czy to jest coś nowego? W każdym razie .. Dzięki. .. Niezłe. – lawphotog

+0

tak, w jQuery UI :) –

6

Próbowałem zaakceptowanej odpowiedzi i okazało się, że działa w niektórych sytuacjach, ale nie w innych. Stosując tę ​​samą ideę, jest to kod wymyśliłem tego kodu ...

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

... która opiera się na fakcie, że z-index of .ui-widget-overlay jest 9998.

Dodatkowo, aby naprawić problem, gdzie nakładka nie obejmuje pełną wysokość swojej stronie (jak .ui-widget-overlay ma tylko wysokość 1000%), wpadłem na to:

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

+1

To działało dla mnie! – CodeGuyRoss

+0

Obie przesłonięcia zadziałały dla mnie w różnych przeglądarkach - dzięki ban-geoinżynierii. – PiggyMacPigPig

1

All I potrzeba była z-index:1 zastosowana do ui-dialog. Nie mogłem się ubiegać o , aby to zadziałało.

Robię to w Wordpress, w tym skrypty "jquery", "jquery-ui-core", "jquery-ui-dialog". Oto mój istotne css:

.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; 
} 
Powiązane problemy