4

jquery-ui dialog boxを使用しています。私の問題は、[x] ボタンをクリックしてダイアログを閉じることです。また、cancel() 関数を実行する必要があります。

これどうやってするの?

var content = 
{
    autoOpen    : false,
    modal       : true,
    width       : 350,
    minHeight   : 50,
    height      : 350,
    position    : "center",
    resizable   : false,
    draggable   : false,
    close       : function () {$(".privacy_modal").prop("checked", false);},
    buttons: 
    {
        "Cancel": function cancel() 
        { 
            $(".privacy_modal").prop("checked", false); $(this).dialog("close"); 
        },
        "Accept": function accept() 
        {
            $(".privacy_modal").prop("checked", true); $(this).dialog("close"); 
        }
    }
};

テスト

注:同意ボタンをクリックしたときに関数をオーバーライドするため、閉じるを使用しても問題は解決しません

4

2 に答える 2

7

サードパーティ変数 (デフォルトで False である bAccepts) とサードパーティ メソッドを使用できます。

ユーザーが同意した場合:

  • bAccepts を True に設定します

ユーザーがキャンセルした場合:

  • bAccepts を False に設定する

onClose が起動されると、次のことを行うメソッド doClose() を呼び出します。

  • bAccepts が True の場合 => 受け入れる
  • それ以外 => キャンセル

以下は未テストの疑似コードです。作業コードを参照してください。

var bAccepts = false;
var content = {
                    autoOpen    : false,
                    modal       : true,
                    width       : 350,
                    minHeight   : 50,
                    height      : 350,
                    position    : "center",
                    resizable   : false,
                    draggable   : false,
                    close       : function () { if (bAccepts) {...} else {...} },
                    buttons: {
                        "Cancel": function cancel() { bAccepts = false; $(this).dialog("close");},
                        "Accept": function accept() { bAccepts = true; $(this).dialog("close");}
             }
};
于 2012-06-28T07:38:58.623 に答える
3

実際のデモ http://jsfiddle.net/Ea6Hm/1/

使用できます: http://docs.jquery.com/UI/Dialog#event-beforeClose

を使用beforeCloseすると、ダイアログ ボックスを閉じる前に呼び出したい関数を呼び出すことができます。

お役に立てれば、

コード

$(document).ready(function() {
    $('#theLink').click(function() {
        $("#forgot-dialog").dialog("open");
    });

    $("#forgot-dialog").dialog({
        modal: true,
        autoOpen: false,
        height: 255,
        width: 300,
        beforeClose: function() {
            alert("Do whatever before Close");
        },
        buttons: {
            "Retrieve": function() {
                document.forms["forgotform"].submit();
            },
            Cancel: function() {
                $(this).dialog("close");
            }
        },
    });


});​
于 2012-06-28T07:44:31.320 に答える