10

私はjavascriptとjQueryを初めて使用します。jQueryUIウィジェットを使用してモーダルダイアログを実装しようとしています。

モーダルダイアログは[OK]ボタンと[キャンセル]ボタンで正しく表示されますが、dialog('open')関数呼び出しがブロックされていないようで、[OK]または[キャンセル]クリックを待ちます。たとえば、次のコードを実行すると

.....ボタンクリックで

  okToDelete = false; //a global variable
  $('deleteDialog').dialog('open'); //this does not block but returns immediately
  alert(okToDelete == true ? "ok" : "false");

アラートボックスが最初に表示され、次にモーダルダイアログが表示されます。okToDeleteは、関数に入るときにfalseに設定し、OKボタンのコールバックでtrueに設定したグローバル変数です。

これが私のダイアログ初期化関数です

$("#deleteDialog").dialog({
        bgiframe: true,
        autoOpen: false,
        modal: true,
        overlay: {
            backgroundColor: '#000',
            opacity: 0.5
        },
        buttons: {
            Cancel: function() {
                $(this).dialog('close');

            },
            Ok: function() {
                $(this).dialog('close');
                okToDelete = true;
            }
        }
    });
4

1 に答える 1

11

「ブロック」するためのものではありません。アラートを表示したい場合(これはテスト用だと思います)、ダイアログが閉じた後に他の関数を呼び出したい場合は、または関数内に配置しcallbackます。okcancel

これをチェックしてください:http:
//docs.jquery.com/UI/Dialog#event-close

closeドキュメントからのイベント:
このイベントは、ダイアログが閉じられたときにトリガーされます。
コード例

closeイベントをinitオプションとして処理するためのコールバック関数を提供します。

$('.selector').dialog({
   close: function(event, ui) { ... }
});

次のタイプでcloseイベントにバインドします:dialogclose。

$('.selector').bind('dialogclose', function(event, ui) {
  ...
});
于 2009-11-14T09:20:09.230 に答える