Jquery ui jQuery对话框表单字段的过帐

Jquery ui jQuery对话框表单字段的过帐,jquery-ui,jquery,Jquery Ui,Jquery,我试图通过jQuery模式对话框输入一些数据。我希望用下面这样的方法来收集我的数据以便发布 data = $('#myDialog').serialize(); 然而,这没有任何结果。如果我只引用包含表单而不是myDialog,那么我会得到页面上的所有字段,对话框中的字段除外 在对话框中收集表单字段以进行AJAX提交的最佳方法是什么?发生这种情况的原因是,dialog实际上删除了元素,并将它们添加到文档体的根级别。这样做是为了使对话框脚本能够确定其位置(以确保对话框中的数据不包含在相对位置的元

我试图通过jQuery模式对话框输入一些数据。我希望用下面这样的方法来收集我的数据以便发布

data = $('#myDialog').serialize();
然而,这没有任何结果。如果我只引用包含表单而不是myDialog,那么我会得到页面上的所有字段,对话框中的字段除外


在对话框中收集表单字段以进行AJAX提交的最佳方法是什么?

发生这种情况的原因是,
dialog
实际上删除了元素,并将它们添加到文档体的根级别。这样做是为了使对话框脚本能够确定其位置(以确保对话框中的数据不包含在相对位置的元素中)。这意味着您的字段实际上不再包含在表单中


您仍然可以通过id访问各个字段(或任何类似的方式)来获取它们的值,但是如果您想使用方便的
序列化
函数,您需要在对话框中有一个表单。

我刚刚遇到了完全相同的问题,因为我的对话框中有太多字段,无法单独引用它们,我所做的是将对话框包装成一个临时表单,序列化它,并在执行ajax调用之前将结果附加到原始表单的序列化数据中:

function getDialogData(dialogId) {
    var tempForm = document.createElement("form");
    tempForm.id = "tempForm";
    tempForm.innerHTML = $(dialogId).html();
    document.appendChild(tempForm);
    var dialogData = $("#tempForm").serialize();
    document.removeChild(tempForm);
    return dialogData;
}

function submitForm() {
    var data = $("#MyForm").serialize();
    var dialogData = getDialogData("#MyDialog");
    data += "&" + dialogData;
    $.ajax({
        url: "MyPage.aspx",
        type: "POST",
        data: data,
        dataType: "html",
        success: function(html) {
            MyCallback(html);
        }
    });
}

对话框中的表单元素将从表单中删除并移动到主体的末尾。你需要这样的东西

 $("#dialog_id").dialog().parent().appendTo($("#form_id"));

这与charm类似,但如果使用asp.net母版页,则很难在页面中添加其他表单。aspx页面上只能有一个表单:(
jQuery("#test").dialog({
           autoResize:true,
           width:500,
           height:600,
           modal: true,
           bgiframe: true,
           }).parent().appendTo("form");