この質問を、自分のサイトで再利用できる多目的 jQueryUI ダイアログ関数の基礎として使用しています。 質問 17013222コードを再利用して、関数呼び出しで定義されたコールバックを使用してさまざまなボタンを表示できるようにしたいと考えています。
ただし、この回答を拡張してコールバック関数を使用すると、必要な結果が得られません。ダイアログの [保存] ボタンが押されたときではなく、動的ボタンを作成すると、コールバック関数が実行されます。
ここに jsFiddle があり、私の無能さを示していますjsFiddle
[保存] ボタンがクリックされたときにコールバックを実行するにはどうすればよいですか?
以下は、簡略化されたコード スニペットです。
function showDialog(inToDisplay, inTitle, buttonSetup, inSaveCallback) {
'use strict';
var dialog_buttons = {};
$('#jqDialog').load(inToDisplay + '.asp', function () {
$(this).attr('title', inTitle);
/*Build our button choices*/
if (buttonSetup === 'closeonly') {
dialog_buttons['Close'] = function () {
$(this).dialog("close");
$(this).dialog("destroy");
}
} else if (buttonSetup === 'savecancel') {
dialog_buttons['Save'] = function () {
if (inSaveCallback && typeof (inSaveCallback) === "function") {
inSaveCallback;
};
$(this).dialog("close");
$(this).dialog("destroy");
}
dialog_buttons['Close'] = function () {
$(this).dialog("close");
$(this).dialog("destroy");
}
}
$(this).dialog({
autoOpen: false,
modal: true,
open: function (event, ui) {
},
buttons: dialog_buttons
});
$('#jqDialog').dialog('open');
});
}
function saveAnswer() {
alert('ToDo: Save data here');
}
$(document).ready(function () {
showDialog('ajax_manageAnswer', 'Enter your answer details', 'savecancel', saveAnswer());
});