Отправить с JQuery в Firefox 3 & Opera в модальном диалоговом окне от SimpleModal - PullRequest
0 голосов
/ 17 декабря 2008

Я пытаюсь отправить форму, отображаемую в диалоге SimpleModal, но моя отправка никогда не вызывается, когда я использую FF3 & Opera (работает Chrome, Safari и IE). Я использую следующий код:

function ShowModal(rendercontainerid, modalcontainerid, url) {
    if (url == '')
        return;
    $.get(url, function(data) {
        $(rendercontainerid).html(data);
        $(rendercontainerid).modal({ 
            close: false,
            containerId: modalcontainerid,
            onOpen: function(dialog) {
                dialog.overlay.fadeIn('slow', function() {
                    dialog.container.slideDown('slow', function() {
                        dialog.data.fadeIn('slow');
                    });
                });
            },
            onClose: function(dialog) {
                dialog.data.fadeOut('slow', function() {
                    dialog.container.slideUp('slow', function() {
                        dialog.overlay.fadeOut('slow', function() {
                            $.modal.close(); // must call this!
                        });
                    });
                });
            }
        });
    });
}

function CloseDialog() {
    $.modal.close();
}

function SubmitAndClose(rendercontainerid) {
    $(rendercontainerid).find('form').submit();
    CloseDialog();
    window.location = window.location;
}

function AjaxSubmitAndClose(rendercontainerid) {
    var form = $(rendercontainerid).find('form');
    var url = $(form).attr('action');
    var postData = $(form).serializeArray();

    var options = {
        dataType: 'json',
        success: AjaxSubmitSucces
    };

    $(form).ajaxSubmit(options);
}

function AjaxSubmitSucces(data) {
    if (data.ErrorMessage != '') {
        alert(data.ErrorMessage);
    }
    else if (data.RedirectUrl != '') {
        CloseDialog();
        window.location = data.RedirectUrl;
    }
}

Я также пытался использовать плагин jquery.form для публикации ajax, но затем вы увидите, что formdata (fckeditor) находится в исходных значениях (похоже, что он кэшируется).

1 Ответ

1 голос
/ 28 декабря 2008

Попробуйте использовать обратный вызов onShow:

onShow: function (dialog) {
  // bind form submit in dialog
  dialog.data.find('form').submit(function (e) {
    e.preventDefault();
    // do stuff here
  });
}
...