私は以下のjqueryを使用して、AjaxControlToolkitタブコンテナでタブをクリックしたときの動作を制御しています。アクティブなタブを設定するためにTabpanelでブートストラップ・モーダルを使用する
隠しテキスト入力(hdnFormSaved)の値が "True"の場合、クリックされたタブはアクティブ(this.get_owner().set_activeTab(this)
)に設定されます。そうでないと、確認ダイアログが作成されます。クリックされたタブは、ダイアログで確認された場合にのみ有効に設定されます。
$(function() {
Sys.Extended.UI.TabPanel.prototype._header_onclick =
function (e) {
this.raiseClick();
if ($("[id$=hdnFormSaved]").val() == "True") {
this.get_owner().set_activeTab(this);
} else {
if (confirm('Do you want to change tab?'))
this.get_owner().set_activeTab(this);
else
return false;
}
};
});
このソリューションは完全に機能します。しかし、確認ダイアログをブートストラップモーダルに置き換えたいと思います。
確認ダイアログではなく、elseブロック内でモーダルを初期化しています。ここからは、モーダルの[OK]ボタンをクリックすると、クリックされたタブをアクティブに設定する方法がわかりません。同じelseブロック内でイベントを聞くことはできますか?
$(function() {
Sys.Extended.UI.TabPanel.prototype._header_onclick =
function (e) {
this.raiseClick();
if ($("[id$=hdnFormSaved]").val() == "True") {
this.get_owner().set_activeTab(this);
} else {
$('#myModal').modal();
}
};
});
アドバイスをお待ちしております。ありがとう。私はモーダルOK
ボタンを#btn_okay
のIDを与え、on
無名関数にコンテキストを渡すためにjQueryのproxy
を使用
$(function() {
Sys.Extended.UI.TabPanel.prototype._header_onclick =
function (e) {
this.raiseClick();
if ($("[id$=hdnFormSaved]").val() == "True") {
this.get_owner().set_activeTab(this);
} else {
obj = this;
$('#myModal').modal();
$("#btn_okay").on("click", $.proxy(function() {
this.get_owner().set_activeTab(this);
}, this));
}
};
});
:以下のように解決