Диалоговая регистрация jQuery полей формы

Я пытаюсь сделать некоторый ввод данных с помощью jQuery модальное Диалоговое окно. Я надеялся использовать что-то как следующее для собирания моих данных для регистрации.

data = $('#myDialog').serialize();

Однако это ни к чему не приводит. Если я ссылаюсь просто на содержание формы вместо этого myDialog затем, я получаю все поля на странице кроме полей в моем диалоговом окне.

Что лучший способ состоит в том, чтобы собрать поля формы в диалоговом окне для представления Ajax?

5
задан kiamlaluno 24 December 2009 в 00:16
поделиться

2 ответа

Причина, по которой это происходит, заключается в том, что диалог фактически удаляет ваши элементы и добавляет их на корневом уровне в тело документа. Это делается для того, чтобы сценарий диалога мог быть уверенным в своем позиционировании (чтобы быть уверенным, что данные, которые отображаются в диалоге, не содержатся, скажем, в относительно позиционируемом элементе). Это означает, что ваши поля на самом деле больше не содержат в вашей форме.

Вы по-прежнему можете получать их значения, обращаясь к отдельным полям по идентификатору (или чему-то подобному), но если вы хотите использовать удобная функция сериализации , вы

6
ответ дан 13 December 2019 в 22:09
поделиться

Я только что столкнулся с той же проблемой, и, поскольку у меня было слишком много полей в моем диалоге, чтобы ссылаться на них по отдельности, я заключил диалог во временную форму, сериализуйте ее и добавьте результат к сериализованным данным моей исходной формы перед выполнением вызова 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);
        }
    });
}
2
ответ дан 13 December 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: