3
$("#first").dialog({ width: 304, modal: true,

  beforeclose: function (e, ui) 
  {
        $("#confirm").dialog({ width: 500, modal: true,
            buttons: {
                "Confirm": function () {
                    document.location.href = "/Home/Index";
                },
                "Cancel": function () {
                    $(this).dialog('close');
                    return false;
                }
            }
        });
    }
});

ダイアログが開く#firstのを待たずに、ダイアログが閉じます#confirmconfirm()私はjavascriptの機能について知っていますが、この場合はダイアログを使いたいです。どうやってやるの?

4

2 に答える 2

8

細かいマニュアルから:

beforeClose(イベント、ui)

ダイアログが閉じようとしているときにトリガーされます。キャンセルすると、ダイアログは閉じません。

beforeCloseしたがって、ハンドラーreturn falseでダイアログが閉じないようにする必要があります。

beforeClose: function(e, ui) {
    $("#confirm").dialog({ width: 500, modal: true, /* ... */ });
    return false;
}

確認beforeCloseボタンは場所を変更するので、2 番目のダイアログが最初のダイアログを閉じるのをハンドラーが妨げていることを心配する必要はありません。beforeCloseページの場所を変更していない場合は、すべてのクローズを防止するために何らかのフラグが必要になります。たとえば、次のようなものです。

beforeclose: function(e, ui) {
     var $dlg = $(this);
     if($dlg.data('can-close')) {
         $dlg.removeData('can-close');
         return true;
     }
     $("#confirm").dialog({
         //...
         buttons: {
             Confirm: function() {
                 $(this).dialog('close');
                 $dlg.data('can-close', true);
                 $dlg.dialog('close');
             },
             Cancel: function() {
                 $(this).dialog('close');
             }
         }
     });
     return false;
 }

デモ: http://jsfiddle.net/ambiguous/jYZpD/

于 2012-06-02T18:13:56.353 に答える
3

私は自分の質問に答えるつもりですが、これはうまくいきます:

$("#first").dialog({ width: 304, modal: true,

  beforeclose: function (e, ui) 
  {
        $("#confirm").dialog({ width: 500, modal: true,
            buttons: {
                "Confirm": function () {
                    document.location.href = "/Home/Index";
                },
                "Cancel": function () {
                    $(this).dialog('close');
                }
            }
        });
      return false;
    }
});
于 2012-06-02T18:11:07.777 に答える