ダイアログを閉じる前のSimpleModal確認

javascript jquery simplemodal
ダイアログを閉じる前のSimpleModal確認

SimpleModal(http://www.ericmmartin.com/projects/simplemodal/)を使用していますが、ダイアログに表示されるフォームがあります。 私がやりたいのは、ユーザーがダイアログを閉じる(エスケープまたは閉じるアイコンをクリックする)たびに確認を表示し、フォームデータを保存せずに本当に閉じたいかどうかを尋ねることです。 私は以下を試しました:

onClose: function (dialog) {
    if (confirm('Are you sure you want to close without saving?')) {
        $.modal.close();
    }
}

ただし、トリガーは1回のみです。 キャンセルを押すと、後で再び閉じることができなくなります。これは理にかなっています。 誰か提案や解決策がありますか? 任意の助けは大歓迎です。 🙂

  5  1


ベストアンサー

私はあなたのために `SimpleModal`のソースを見ましたが、あなたがやりたいことは彼らのコードではできません。 これが理由です:

カスタムコールバック「onClose」を呼び出す直前に、これを呼び出します。

s.unbindEvents();

これは事実上、「このボックスは好きかどうかにかかわらず閉じます」と言っています。 キャンセルできる通常のコールバックとは異なります。

代わりにhttp://jqueryui.com/demos/dialog[jQuery UI Dialog]を使用することをお勧めします。http://jqueryui.com/demos/dialog/#eventを使用すると、この機能を非常に簡単に実装できます。 -beforeclose [beforeclose]コールバック。 単に使用します:

beforeclose: function(){
    return confirm('Are you sure you want to close without saving?')
}

8


私はジェロンが試みていたようなものを使ってこれを機能させましたが、イベントを再バインドしました:

onClose: function (dialog) {
    if (confirm('Are you sure you want to close without saving?')) {
        $.modal.close();
    }else{
        this.occb = false;
        this.bindEvents();
    }
}

closeイベントのキャンセルをサポートするには、このプラグインを更新する必要があります。 実際にはコード内のイベントとして考えられていないようです。 私はそれが他のjsイベントのように振る舞うことを望みます。

4


また、ソースを見て、「onclosed」イベントが実行されると、「occb」フラグが有効になります。

あなたが試すことができる(試したことはありません)は、この occb`が this`変数に渡されるときにオーバーライドすることです。

onClose: function (dialog) {
    if (confirm('Are you sure you want to close without saving?')) {
        $.modal.close();
    }else{
        this.occb = false;
    }
}

お役に立てれば。

0


タイトルとURLをコピーしました