我想通過jQuery模態對話框做一些數據輸入。我希望能夠使用類似下面的內容收集我的數據以供發佈。jQuery對話框張貼表單域
data = $('#myDialog').serialize();
然而,這沒有結果。如果我只引用包含的表單而不是myDialog,那麼我會獲取除對話框中的所有字段外的所有字段。
收集AJAX提交對話框中表單域的最佳方法是什麼?
我想通過jQuery模態對話框做一些數據輸入。我希望能夠使用類似下面的內容收集我的數據以供發佈。jQuery對話框張貼表單域
data = $('#myDialog').serialize();
然而,這沒有結果。如果我只引用包含的表單而不是myDialog,那麼我會獲取除對話框中的所有字段外的所有字段。
收集AJAX提交對話框中表單域的最佳方法是什麼?
發生這種情況的原因是dialog
實際上是刪除您的元素並將其添加到文檔主體中的根級別。這樣做是爲了讓對話腳本可以對其定位充滿信心(確保沒有包含正在對話的數據,例如在相對定位的元素中)。這意味着您的字段實際上是不再包含您的表單中的。
您仍然可以通過ID訪問各個領域得到他們的價值觀(或類似的東西),但如果你想使用一個方便serialize
功能,你將需要有內對話形式。
我剛剛遇到完全相同的問題,因爲我的對話框中有太多字段單獨引用它們,我所做的是將對話框封裝到臨時窗體中,將其序列化並將結果追加到我的原始表格的序列化數據:
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"));
有沒有辦法讓這個模式對話框工作? – NickG 2014-05-07 12:25:35
jQuery("#test").dialog({
autoResize:true,
width:500,
height:600,
modal: true,
bgiframe: true,
}).parent().appendTo("form");
這就像魅力
但如果你使用asp.net masterpages,很難把另一種形式的內頁。你只能在一個aspx頁面上有一個窗體:( – NickG 2014-05-07 12:26:27