jQuery模态窗口从我的表单中删除元素

jQuery,当我用它创建一个包含表单元素的模态窗口时,它会在我提交表单时取出这些元素。

表格的例子:

JS的摘要:

  $(document).ready(function(){ $("#add_photo").dialog({ autoOpen: false, buttons: { "Ok": function() { $(this).dialog("close"); } } }); }); 

所以我在检查期间通过firebug进行的操作是,jquery实际上删除了我在#add_photo中的表单元素并将它们放在DOM中的表单之外,所以即使在html中,modal dialog也在我的表单中,在DOM中它不是。 …

这就是我遇到这个问题的原因!

有没有人遇到过simmilar问题?

任何解决方案?! 非常感谢你!

我刚遇到同样的问题。 我通过添加另一个来解决它

  

在表单的最后(但内部),然后你必须将其添加到jQuery:

 $("form").submit(function() { $("#add_photo").prependTo("#beforesubmit"); }); 

这将确保在表单提交之前,您的对话框div将被放回到表单标记之间。 感谢arnorhs,我来到了这个解决方案。

干杯!

我不确定你正在使用什么对话框插件,但我怀疑对话框插件是将DIV拉出表单并将其放入页面正文中,因此它可以将框放在前面页面,在表单元素之外。

所以换句话说,为了让对话框插件让你的对话框显示在页面上的所有内容之前,它需要将它从它所在的任何元素中删除,无论它是一个表单还是其他任何东西。

表单需要在div中。 这就是所有Dialog示例中的情况。 不确定如何使用不在对话框中的标题和url输入来做到这一点。 你能不能把它们放在上面吗?

这不会有问题:

 

本文介绍如何解决您的问题:

您会看到我们页面中间的内容已经标记了其他类,最重要的是,它们位于结束标记之前的页面底部。 为什么这很重要? 因为它还意味着您在此对话框中放置的任何ASP.Net控件也将显示在页面底部,页面标记之外。 这意味着您将无法在回发时获得它们的句柄。

解决方案是什么? 嗯,有两种选择:

  1. 将元素移回表单,并在单击按钮时手动提交
  2. 在创建对话框时克隆元素,然后克隆值,触发单击原始按钮(或者,如果您只有一个或两个值要回发,只需将值分配给ASP.Net隐藏字段控件)。

正如在这个问题的答案中所见,jQuery对话框有一个字段appendTo ,可用于配置在初始化时将对话框(div-wise)放在何处。

这似乎是解决问题的最少忍者解决方案。

来自http://blog.coreycoogan.com/2010/12/01/jquerys-dialog-and-form-problems/

通过执行$("mydialog").parent().appendTo($("form:first"))将其绑定到表单。

请注意,在您调用$("mydialog").dialog()后,您必须进行此调用$("mydialog").dialog()