ASP.NET MVC3 / jQuery 1.9.1 / jQuery UI 1.10.2
をクリックした後にモーダル ダイアログを開くページがありますAjax.ActionLink
。このダイアログ内には、入力フィールドとdatepicker
それに関連付けられた があります。初めてダイアログを開くと、datepicker ボタン (または関連付けられた入力フィールド内でフォーカスを受け取り、showOn
に設定both
) をクリックすると、datepicker が期待どおりに表示されます。モーダル ダイアログが開いている間は、必要なだけ何度でも実行できます。毎回、日付ピッカーが表示されます。モーダル ダイアログを閉じると (アタッチ$("ui-widget-overlay").click(function(){...});
されたものを使用して再度開くと、ボタンをクリックしようとしても、関連する入力フィールドをクリックしようとしても、日付ピッカーが機能しなくなります。
jQueryコードをデバッグしようとしましたが、実行されているコード行はどちらも同じです(ダイアログが2回目に開かれたときに日付ピッカーが表示されなくても、jQueryメソッドがトリガーされます)。デバッガーで。私は完全に困惑しており、この投稿で説明されている方法は、ダイアログが最初に開いたときに日付ピッカーを表示するという点でのみ役に立ちました。別の投稿showOn
は、設定がどのように機能するかの誤解にのみ関連しているようです。
また、ダイアログを閉じるときにdatepickerを破棄しようとしましたが、役に立ち$("#datepicker").datepicker("destroy");
ませんでした。何か案は?
アップデート
「呼び出しページ」で:
$(document).ready(function () {
$("#popupDialog").dialog(
{
autoOpen: false,
modal: true,
open: function()
{
$("ui-widget-overlay").click(function()
{
$("#popupDialog").dialog("close");
}
}
});
});
[...]
@Ajax.ActionLink( "Some text", "Action", "Controller", new AjaxOptions {
HttpMethod = "GET",
UpdateTargetId = "popupDialog",
InsertionMode = InsertionMode.Replace,
OnSuccess = "openPopup()"
})
[...]
function openPopup()
{
$("popupDialog").dialog("open");
}
[...]
<div id="popupDialog" style="display: none;"></div>
コントローラーのアクションは非常に単純で、次のようになります。
public ActionResult Action()
{
MyActionModel myActionModel = new MyActionModel();
return PartialView( myActionModel );
}