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 代码,并且两次运行的代码行都是相同的(即使第二次打开对话框时没有显示日期选择器,也触发了 jQuery 方法)从我可以看到在调试器中。我完全被难住了,这篇文章中描述的方法仅有助于在对话框第一次打开时显示日期选择器。另一个帖子似乎只与对showOn
设置如何工作的误解有关。
我还尝试$("#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 );
}