0

シンプルモーダルを使用して、iframe を介してフォームを表示しています。フォームはモーダルを閉じることができ、onClose コールバックはメイン画面を更新して、画面上の情報を更新できます。しかし、iframeフォームがモーダルを閉じない場合、メイン画面を更新したくありません。つまり、closeHTML、escClose、または overlayClose から単純に閉じるだけで画面を更新したくありません。

closeHTML、escClose、またはoverlayCloseを介してクローズが呼び出された場合、onCloseコールバックでモーダルを閉じているものを特定する方法はありますか?

4

1 に答える 1

0

これを行うためのより良い方法があると確信していますが、これにより正しい軌道に乗ることができます。

  • プラグインを編集して、クロージングのタイプごとにデータ属性値を設定します
  • onClose コールバックを使用してデータ属性を取得します

プラグインコード

    // bind the close event to any element with the closeClass class
    $('.' + s.o.closeClass).bind('click.simplemodal', function (e) {
        e.preventDefault();
        // set 'closeType' data attr
        $('body').data('closetype', 'closeClass');
        s.close();

    });

    // bind the overlay click to the close function, if enabled
    if (s.o.modal && s.o.close && s.o.overlayClose) {
        s.d.overlay.bind('click.simplemodal', function (e) {
            e.preventDefault();
            // set 'closeType' data attr
            $('body').data('closetype', 'overlayClose');
            s.close();
        });
    }

    // bind keydown events
    doc.bind('keydown.simplemodal', function (e) {
        if (s.o.modal && e.keyCode === 9) { // TAB
            s.watchTab(e);
        }
        else if ((s.o.close && s.o.escClose) && e.keyCode === 27) { // ESC
            e.preventDefault();
            // set 'closeType' data attr
            $('body').data('closetype', 'escClose');
            s.close();
        }
    });

プラグインの初期化

    // Load dialog on click
    $('#basic-modal .basic').click(function (e) {
        $('#basic-modal-content').modal({
            overlayClose: true,
            onClose: function() {
                console.log($('body').data('closetype'));
                $.modal.close();
            }
        });
        return false;
    });
于 2012-05-09T01:22:36.543 に答える