2

ポップアップにいくつかのフォーム コントロールがあり、フォームが無効な場合にユーザーがそれを閉じないようにしたいと考えています。

テストとしてこれを試しましたが、ユーザーが閉じるボタンなどをクリックするとポップアップが閉じます。

$.magnificPopup.open({
            items: {
                src: '#topic'
            },
            type: 'inline',
            removalDelay: 500, //delay removal by X to allow out-animation
            mainClass: 'mfp-3d-unfold',
            closeMarkup: '<button title="Close (Esc)" type="button" class="mfp-close"></button>',
            midClick: true, // Allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source in href.
            callbacks: {
                beforeClose: function () {
                    // Callback available since v0.9.0
                    return false;
                },
                close: function () {
                    // Will fire when popup is closed
                    return false;
                }
            }
        });
4

2 に答える 2

3

ドキュメントによるとcloseOnContentClick: false、オプションとして追加すると、ウィンドウは閉じないはずです。

magnificPopup.open({
            items: {
                src: '#topic'
            },
            type: 'inline',
            closeOnContentClick: false,
            removalDelay: 500, //delay removal by X to allow out-animation
            mainClass: 'mfp-3d-unfold',
            closeMarkup: '<button title="Close (Esc)" type="button" class="mfp-close"></button>',
            midClick: true
        });

ただし、Ajaxウィンドウ内(フォーム)をクリックしても閉じないようにしようとしましたが、このオプションを追加してもまったく機能しません(ただし、インラインでは機能する可能性があります)。これまでのところ、それを機能させることができた唯一の方法はmfp-prevent-close、ポップアップ内のすべての子ノード (たとえば、すべてのフォーム入力フィールド、周囲のフィールドセットなど) にクラスを追加することです。

とにかくこれが役立つことを願っています:)

于 2013-10-25T06:24:32.447 に答える
0

私はついにGitHubで解決策を見つけました

コードの次の行を置き換える必要があります

// if click is outside the content
if( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) {

// if click is outside the content
if( (target !== mfp.content[0] && !$.contains(mfp.content[0].parentElement, target)) ) {

それは私のために問題を解決しました。

于 2016-01-02T15:30:54.040 に答える