ユーザーがフォームデータを変更できるiFrameを開くファンシーボックスがあります。ファンシーボックスを閉じようとすると、変更を保存するかどうかをユーザーに尋ねられるようにしたいと思います。ボタン「はい」、「いいえ」、「キャンセル」のあるjQuery UIダイアログボックスを使用してこれを行いたいと考えています。このダイアログは、fancybox beforeClose コールバックを使用して生成および表示されます。false を返すことで、ダイアログが表示されている間、fancybox が閉じないようにすることができました。私の質問は、fancybox を閉じるにはどうすればよいですか? $.fancybox.close() を使用すると、fancybox beforeClose コールバックが再度トリガーされます (ループ)。
私のコード:
$.fancybox.open({
href:'/index.php?task=details_movie',
type:'iframe',
padding:10,
minHeight: '90%',
beforeClose: function() {
if ($("#dialog-confirm").length == 0) {
$("body").append('<div id="dialog-confirm" title="Save changes?"><p><span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>Do you wish to save any changes made to the details of this movie?</p></div>');
$("#dialog-confirm").dialog({
modal:true,
buttons: [
{
text: "Yes",
click: function() {
alert("Yes"); // perform save actions
$("#dialog-confirm").remove();
}
},
{
text: "No",
click: function() {
$.fancybox.close(); // this creates the loop back to beforeClose callback
$("#dialog-confirm").remove();
}
},
{
text: "Cancel",
click: function() {
$("#dialog-confirm").remove();
return false;
}
}
]
});
$(".ui-widget-overlay").css({"z-index": 99999});
$(".ui-dialog").css({"z-index": 100000});
}
return false;
}
});