0

编辑:我最近了解到这个问题实际上是两个独立的问题:1)使用脚本在必要的关口关闭父元素,以及 2)确保所有必要的函数都以正确的顺序被调用和完成。我想出了两种关闭父元素的方法,这些方法包括在下面。第二个问题在这里解决:Calling jQuery function in php (or modifying javascript so php runs the remaining code)


原始问题

一旦验证并提交了表单,我需要调用 2 个函数,但是我未能成功地将这些函数插入到我的脚本中,而不会阻止另一个函数完成(在 javascript 或 php 中)。

如何将这些功能集成到脚本中以关闭父项(iframe 和对新用户的通知)和/或在验证并提交表单后从 php 调用它们?

新功能:

parent.close_field('notice');
parent.$.fancybox.close();

现有的 Javascript

var $custInfo = $("#customer_info");
  $(document).ready(function () {
    var validator = $custInfo.validate({
        rules: {..  },
        messages: {..},
        errorLabelContainer: "#messageBox",
        submitHandler: function () {  
            $custInfo.ajaxSubmit({               
            });
        }
    });                 
    $custInfo.find("input[name=gender]").change(function () {
        if ($(this).val() == "male") {
            $custInfo.submit();
        }
    });
});

我正在使用 Fancybox2。我还尝试了其他需要向表单标签添加属性的方法,但是这些方法完全绕过了脚本。

4

2 回答 2

0

我最近了解到这个问题实际上是 2 个不同的问题:1)使用脚本在必要的接合处关闭父元素,以及 2)确保所有必要的函数都以正确的顺序被调用和完成。

我想出了两种关闭父元素的方法,这些方法包括在下面。第二个问题在这里解决: Calling jQuery function in php (or modifying javascript so php runs the remaining code)

我用来关闭父元素的方法

我想出了两种关闭父元素的方法。我在提交表单时使用方法 1 来关闭它,而在我需要在单击时关闭项目的情况下使用方法 2(即,如果用户导航到特定页面)

方法一

在我的特定示例中,我需要为每个人关闭“通知”,但只为男性新用户关闭 iframe,因此我将其添加到函数中:

submitHandler: function () {
            $custInfo.ajaxSubmit({
            success: function () {
if ($('input[name=gender][value=female]').is(':checked')){                                                      
        parent.close_field('notice');
        window.location.href="page2.html";                                   
        }                             
        else if ($('input[name=gender][value=male]').is(':checked')) {
        parent.close_field('notice');
        parent.$.fancybox.close();
        alert("This service is not yet available for men, but we'll be sure to send an invitation as soon as it is");                             
        }
       }
     });

方法二

JS

function close_parent_items() {
     parent.close_field('notice');
     parent.$.fancybox.close();
}

HTML

onclick="close_parent_items();"
于 2012-12-02T18:31:12.667 回答
0

简单的解决方案:将其添加到您的表单标签中

target="_parent"

<form method="post" action="your_action_file" target = "_parent" >
</form>

这个对我有用。

于 2013-01-31T07:29:50.380 回答