2010-08-20 44 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