Simplemodal:在iFrame中表单提交与关闭

时间:2015-03-31 15:16:06

标签: javascript jquery simplemodal

在一个简单模式窗口(iframe)中有一个弹出式法律声明,它的工作方式完全符合我的预期。在iframe中有一个表单,当你提交它时,模态窗口关闭,你继续到你的目的地 - 在这种情况下,是一个“mailto:”链接。

问题是 - 我需要一个单独的“关闭”功能,它不会打开mailto链接,只需关闭模态。目前,提交表格或点击“关闭”链接都会打开“mailto”链接。

到目前为止我得到了什么:

在我的iFrame中处理表单提交:

    $('#alertFORM').submit(function() {
    window.parent.jQuery.modal.close(true);
});

我的功能处理其他所有事情:

$('.legalnotice').on('click', function (e) {
e.preventDefault();
var src = "email_alert.html";
var mailto = $(this).attr('href');

$.modal('<iframe src="' + src + '" height="400" width="390" style="border:0" id="legalFRAME">', {
    closeHTML: "<a href='#'>Close</a>",
    closeCLASS: "simplemodal-close",
    containerId: "modal",
    containerCss: {
        backgroundColor: "#f8f8f8",
        borderColor: "#f8f8f8",
        height: 500,
        padding: 0,
        width: 400
    },
    overlayClose: true,
    onClose: function (dialog) {
        $.modal.close();
        window.location.href = mailto;
    }
});

}); });

我相信我理解了这个问题 - 表单提交和'close'链接都调用了onClose函数。还没有完全想出要分开这两个,所以只有表单提交打开'mailto'链接。

我尝试更改iFrame中的代码:

    $('#alertFORM').submit(function() {
    parent.closeModal();
});

...然后回到我上面javascript顶部的父页面上:

function closeModal() {
$("#modal").dialog("close");

}

......但这不起作用。

积极致力于此。建议最受赞赏。

1 个答案:

答案 0 :(得分:0)

终于搞定了!在我的iFrame文件中:

 $('#alertFORM').submit(function() {
    window.showEmail = "true";
    window.parent.jQuery.modal.close(true);
});

 $( ".modalCloseImg" ).on('click', function (e) {
    window.parent.jQuery.modal.close(true);
});

...并返回父页面:

onClose: function (dialog) {
        window.redirectEmail = window.legalFRAME.showEmail;
        if(window.redirectEmail == "true")
        {               
            window.location.href = mailto;
            window.legalFRAME.showEmail = "false";
            window.redirectEmail = "false";
        }
        $.modal.close();            
    }