0

編集:最近、この問題は実際には 2 つの別個の問題であることを知りました: 1) スクリプトを使用して必要な分岐点で親要素を閉じること、および 2) 必要な関数がすべて呼び出され、正しい順序で完了することを確認すること。以下に含めた親要素を閉じるための2つの方法を見つけました。2番目の問題はここで対処されています:phpでjQuery関数を呼び出す(またはjavascriptを変更してphpが残りのコードを実行する)


元の質問

フォームが検証されて送信されたら呼び出す必要がある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

簡単な解決策:これをフォームタグに追加してください

target="_parent"

お気に入り

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

わたしにはできる。

于 2013-01-31T07:29:50.380 に答える
0

私は最近、この問題が実際には 2 つの別個の問題であることを知りました。1) スクリプトを使用して、必要な分岐点で親要素を閉じること、および 2) 必要な関数がすべて呼び出され、正しい順序で完了することを確認することです。

以下に含めた親要素を閉じるための2つの方法を見つけました。2番目の問題はここで対処されています: phpでjQuery関数を呼び出す(またはjavascriptを変更してphpが残りのコードを実行する)

親要素を閉じるために使用した方法

親要素を閉じる2つの方法を見つけました。フォームが送信されたときにメソッド 1 を使用してフォームを閉じ、onclick でアイテムを閉じる必要がある場合 (つまり、ユーザーが特定のページに移動した場合) にメソッド 2 を使用しました。

方法 1

私の特定の例では、全員の「通知」を閉じる必要がありましたが、男性の新しいユーザーの 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");                             
        }
       }
     });

方法 2

JS

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

HTML

onclick="close_parent_items();"
于 2012-12-02T18:31:12.667 に答える