2010-05-25 89 views
0

我在這裏有一個非常奇怪的行爲:我在jQuery UI中創建了一個小彈出對話框,在我的測試HTML頁面中,它完美地工作。當我點擊按鈕時,彈出窗口出現,覆蓋背景,並保持在屏幕上,直到我點擊提供的兩個按鈕之一(確定或取消)。ASP.NET頁面上的jQuery UI對話框(在用戶控件中)

所以現在我想將這添加到我的ASP.NET 3.5應用程序。我想將它添加到用戶控件(ASCX)內的GridView中,該控件位於母版頁中包含的頁面(ASPX)上。 jQuery的1.4.2和jQuery UI 1.8.1腳本母版頁上引用:

<body> 
<form id="XXXXXX" runat="server"> 
    <Ajax:ScriptManager ID="masterScriptManager" runat="server" ScriptMode="Auto"> 
     <Scripts> 
      <asp:ScriptReference Path="~/Scripts/jquery-1.4.2.min.js" /> 
      <asp:ScriptReference Path="~/Scripts/jquery-ui-1.8.1.custom.min.js" /> 
     </Scripts> 
    </Ajax:ScriptManager> 

我不得不改變這種使用Ajax的腳本管理器,因爲它們添加到前所未有的工作。

所以在我的GridView中,我有圖像按鈕欄,當用戶點擊這些,我打電話一點點javascript函數來顯示jQuery用戶界面對話框:

function showDialog() 
{ 
    $("#dlg-discount").dialog('open'); 
    $("#txtAmount").focus(); 
} 

當我運行這個MS IE 8中的頁面,我得到一個單獨的頁面,並在頁面頂部,我得到我的內容,具有適當的背景色和所有。在Firefox 3.5.6中,我確實將彈出窗口作爲對話框。

在這兩種情況下,對話框頁面/彈出窗口會在一秒鐘或更短時間內消失 - 無需點擊任何內容!

它看起來類似於this question,但提供的解決方案在我的情況下不起作用。 This one here也似乎相似,但再次:提出的解決方案似乎並沒有在我的情況下工作...

任何想法/提示/提示什麼h ****在這裏?

謝謝!

更新: OK,一個問題就解決了 - 看來,無論出於何種原因,默認MS Ajax的東西是增加某種「觀察者」我的彈出對話框,並關閉它馬上就顯示出來後: - (

所以我改變了對OnClientClick="showDialog();"OnClientClick="showDialog(); return false;"如何不再發生了 - 在彈出對話框,並停留在那裏,直到我點擊任一兩個按鈕(OKCancel)的

回答

2

哪裏。你是否在創建對話框?應該有一些類似的代碼在DO中被調用M準備好了;

$(document).ready(function(){ 

    var dialogOpts = { 
    autoOpen: false, 
    modal: true, 
    width: 620, 
    height: 660 
    }; 

    $("#dlg-discount").dialog(dialogOpts); 

} 

然後你可以在你的onclick方法中調用$("#dlg-discount").dialog('open')

+0

這幾乎是我正在做的。在FF中,對話框出現的很好(現在),但在一秒鐘後就消失了。在IE 8中,我得到一個單獨的頁面 - 真的很奇怪..... – 2010-05-25 11:15:31

+0

您的設置聽起來幾乎與我們的一樣,除了我們使用asp:ScriptManagerProxy加載js文件而不是Ajax文件並調用jQuery.noConflict( )來釋放對$的引用,而不是使用jQuery對象。我們在頁面上也有一些MS Ajax控件,它們應該會載入與您相同的js。也許他們沒有它就有問題?請參閱api.jquery.com/jQuery.noConflict/ – 2010-05-25 13:25:00

+0

感謝您的意見,戴夫!在那些與CSS擺弄,刪除MS Ajax依賴關係以及一些玩耍的遊戲之間,我終於得到了預期的效果。 – 2010-05-26 11:43:50

相關問題