2010-08-20 65 views
3

jQuery對話框不再起作用我在窗體中使用了一個窗體和一個div,用於jQuery對話框的內容。我的目標是彈出對話框,用戶在文本框和textareas中輸入一些信息,然後提交表單並將該數據提供給我的代碼,但是隨後可以重新打開對話框(頁面在提交後保持不變),輸入新的數據,並且如果他們願意的話重新提交表格。我追加到<form>

如果我運行:

$('div#mydialog').appendTo($('form#foo')); 

然後:

$('div#mydialog').dialog('open'); 

一個對話框顯示了僅按鈕,以及背後正在顯示的DIV,交通不便給用戶。 (簡而言之,它看起來像一個UI部件的羣集性交)

爲什麼將div#mydialog添加到窗體(它是從哪裏開始),然後調用.dialog('open')導致這樣的行爲,以及如何在將它附加到形成#foo以將用戶的數據發送到服務器之後讓它正常打開?

在此先感謝

編輯:看來,由於某種原因,對話不被追加到後最初打開。即它被打開/編輯/關閉了一些次數,用戶點擊「提交」,div被追加到表單中,然後當我嘗試再次對話('打開')時,Firebug顯示它保持正確的位置表單 - jQuery似乎不會嘗試再次移動它,而只是改變它的內聯樣式。有誰知道這是爲什麼?

編輯2:我不知道我有多麼的HTML /腳本的多少會幫助你,它基本上是你想象的只是它是什麼:

<form id="foo"><! -- some form stuff --> 
    <div id="stufftoputindialog" style="display:none;"> 
    <!-- text boxes/textareas to put in dialog --> 
    </div> 
</form> 

$('#stufftoputindialog').dialog({ 
      height: 550, 
      width: 400, 
      modal: true, 
      buttons: { 
       "OK": function() { $(this).dialog("close"); }, 
       "Cancel": function() { $(this).dialog("close"); } 
      }, 
      autoOpen: false 
     } 

點擊編輯按鈕:

$('#stufftoputindialog').dialog('open'); 

上提交的表格:

$('#stufftoputindialog').appendTo('form#foo'); 

然後再次編輯按鈕的點擊,

$('#stufftoputindialog').dialog('open'); 

導致UI trainwreck(根據螢火蟲,#stufftoputindialog沒有形式到右外就像它的移動</body>前第一次)

+0

難道我們看到一些你的HTML,還有可能是你的腳本,如果它有意義? – Ender 2010-08-20 17:56:50

回答

4

它在你需要移動以及容器,而是執行此操作:

$('div#mydialog').parent().appendTo('form#foo'); 

包裝物的東西像標題欄...看你的來源,當你調用.dialog()它的包裝這裏面另一個<div>,你需要去到.parent()然後移動元素:)

+0

我曾嘗試過,但有一個'節點不能插入層次結構中的指定點'錯誤,但事實證明這是因爲我試圖做一個$(div#baz).parent()。append ('form#foo')的另一個對話框內容元素還沒有被移動(所以我試圖追加父本身)。你的答案是有效的,爲此我向你頒發了令人垂涎的綠色複選標記。 – Whisker 2010-08-20 18:20:28