2009-08-25 4 views
3

jquery-uiモーダルダイアログの一部としてCreateボタンとCancelボタンがあります。ユーザーが「作成」をクリックした場合のみ、ダイアログを閉じた後に特定のことをしたい。 「キャンセル」または「X」をクリックするかEscを押すと、何か他の操作を行います。 closeイベントハンドラにパラメータを渡す方法や、何が原因で終了したのかを検出する方法がありますか?jquery UIダイアログでcloseイベントをトリガしたものを検出する方法

答えて

4

ここdiscribedとしてこれを試してみてください。 http://jqueryui.com/demos/dialog/#modal-confirmation

- 上記のリンクからコピーされた

を編集:

var trigger = ""; 
    $("#dialog").dialog({ 
     bgiframe: true, 
     resizable: false, 
     height:140, 
     modal: true, 
     overlay: { 
      backgroundColor: '#000', 
      opacity: 0.5 
     }, 
     buttons: { 
      'Create': function() { 
       // do your stuff 
       trigger = "create"; 
       $(this).dialog('close'); 
      }, 
      Cancel: function() { 
       $(this).dialog('close'); 
      } 
     } 
     close: function() { 
      if (trigger == "create") 
       // do something here 
     } 
    }); 
+0

右、私はどのようにそれを引き起こしたクローズハンドラの内部を検出することができますかと思います。 – Riz

+0

mh、私の頭の上に - varトリガーを宣言= "";グローバルとして「作成」機能で設定します。あなたはクローズハンドラの価値を得ることができるよりも... – stefita

+0

doh!ありがとう! – Riz

4

は、このようなあなたのボタンのイベントを定義します。

$("#dialog").dialog({ 
     bgiframe: true, 
     autoOpen: false, 
     height: 300, 
     modal: true, 
     buttons: { 
      'Create': function() { 
       alert('the user clicked create'); 
       $(this).dialog('close'); 
      }, 
      Cancel: function() { 
       alert('the user clicked cancel'); 
       $(this).dialog('close'); 
      } 
     }, 
     close: function() { 
      // do somthing 

     } 
}); 

また、パラメータpaを見てくださいクローズイベントにssed、メソッドのシグネチャは次のとおりです。

function(event, ui) 

あなたがここに近い場合にlink text

+0

右、私はそれを引き起こしたものをクローズハンドラの内部でどのように検出できるのだろうかと思っています。 – Riz

0
$('#jqPopup').dialog({modal:true,title:tit,autoOpen:false,beforeclose:function(){ 
    //Will get triggered when user press the 'X' button 
    $("#wholeContent").css('display','block');} 
}); 

$("#wholeContent").css('display','none'); 

$('#jqPopup').dialog('open'); 
5

をより多くの情報を見つけることができますイベントパラメータを見て、何が起こったかを伝えることができます(パラメータ1)。

[x]をクリックしてダイアログを閉じると、マウスイベントフィールドが表示されます。

同様に、Escapeを押してダイアログを閉じると、keyboard-eventフィールドが表示されます。

ダイアログがプログラムによって閉じられた場合は、上記のいずれも該当しません。

したがって、開始するには、event.whichをご覧ください。 [x]で閉じると、で終了するエスケープは、キーコード(27)を取得することを意味します。プログラム的に閉じるとは、定義されていないevent.whichを意味します。

今すぐ戻ってあなたの質問に...

、彼らが作成押すと、あなたは一つのことをしたい - それは簡単です、ちょうどそのボタンの機能にそれを置きます。

[x]、Escape、または[キャンセル]で何か他の操作を行いたいとします。 cancelled()という関数を作成し、キャンセルボタンでその関数を呼び出し、event.whichの値がの場合は、closeイベントを呼び出します。

このような何か...

buttons: { 
    'Create': function() { 
     // do your stuff here 
     $(this).dialog('close'); 
    }, 
    Cancel: function() { 
     cancelled(); 
     $(this).dialog('close'); 
    } 
}, 
close: function(event) { 
    if (event.which) { 
     cancelled(); 
    } 
} 

私は何が必要カバーと思うし、それはあなたがしてきた場所を追跡するために変数を作成の周りに混乱する必要がなくなります。

+0

本当に私のために働いた。ありがとうございました!私はいつか彼らがソースを検出するダイアログに何かを構築することを願っています。 – Aamir

関連する問題