2016-05-16 9 views
0

は私がjqueryを使用してモーダルダイアログから 'X'イベントのみをキャプチャする方法はありますか?

$("#dialog").dialog({ 
autoOpen: false, 
resizable: false, 
width: 400, 
height: 140, 
modal: true, 
buttons: { 
    "SUBMIT": function() { 
    $(this).dialog("close"); 
    }, 
    "CANCEL": function() { 
    $(this).dialog("close"); 
    } 
}, 
close: function() { 
    alert('close'); 
} 
}); 

、このようモーダルdialougeを持っていると私は私がモーダルdialougeの[X]ボタンをクリックすると(「近い」)アラートを取得しようとしています。

しかし、この警告( 'close')は、私のモーダル '#dialog'のビットトンを送信してキャンセルボタンをクリックした後でも呼び出されています。

サブリットまたはキャンセルボタンをクリックせずに、私のダイヤルウージの「X」ボックスをクリックしたときにのみ警告が表示されます。

ただし、$(this).dialog( "close");サブミットとキャンセルのボタンイベントがそこにあるはずです。

$(this).dialog( "close")を削除した場合、その働き。

モーダルダイヤルを閉じるのではなく、「X」をクリックしてアラートを出したいと思っています。

誰でもこの問題で私を助けることができますか?

おかげ

+0

私はあなたがデフォルトの閉じるボタンを取り除き、独自のハンドラを追加してそれに独自のハンドラを付ける必要があると思います。 – Barmar

+0

'.dialog()'で行う必要がありますか、単にクリックハンドラを 'X'に追加できますか? – 4castle

+0

@ 4castleこれは.dialogでのみ行う必要があります – Sandy

答えて

0

はクローズ()コールバックは、押されたボタンを表す.currentTargetプロパティを含むイベントオブジェクトを渡します。これを使用して、クリックされたボタンを見つけることができます。例えば、

$("#dialog").dialog({ 
close: function(event,ui) { 
    if($(event.currentTarget).hasClass('ui-dialog-titlebar-close') 
    { 
    alert('close'); 
    } 
} 

のようなものを試してみてくださいまた、直接Xボタンで直接自分を上(「クリック」)関数を作成してみてください可能性があり、それは少しサクサクすることができます。

関連する問題