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