在 SimpleModal 的模态对话框中使用 Firefox 3 中的 JQuery 和歌剧提交

Posted

技术标签:

【中文标题】在 SimpleModal 的模态对话框中使用 Firefox 3 中的 JQuery 和歌剧提交【英文标题】:Submit with JQuery in firefox 3 & opera in a modal dialog box from SimpleModal 【发布时间】:2010-09-27 05:25:32 【问题描述】:

我正在尝试提交一个在 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(An fckeditor) 处于初始值中(看起来它已被缓存)。

【问题讨论】:

在更新 jquery(1.5)、SimpleModal(1.4.1) 和 jQuery Form(2.63) 之后,我的 ajaxSubmit 不会触发自定义成功委托。取而代之的是,我收到了缺少分号的错误。控制器(asp.net)获取 ajaxSubmit 操作并正常处理。 【参考方案1】:

尝试使用 onShow 回调:

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

【讨论】:

以上是关于在 SimpleModal 的模态对话框中使用 Firefox 3 中的 JQuery 和歌剧提交的主要内容,如果未能解决你的问题,请参考以下文章

simplemodal 会弄乱 ASP.NET AJAXified 控件吗?

当我在 ASP.Net 中使用 CustomValidator 服务器端验证时,Simplemodal 关闭

Foreach 循环中奇怪的 SimpleMODAL OSX 动作

用于 JQuery 的 Simplemodal:关闭当前可见的模式并显示另一个

JQuery 模态框和 iframe

vc++6.0如何实现在模态对话框编辑框中输入数据,单击确定按钮将数据添加到组合框按钮中!