用于MVC5的JQueryUIHelpers - DatePicker不在部分视图中呈现

时间:2014-09-14 09:48:41

标签: jquery-ui asp.net-mvc-5 jquery-ui-datepicker

我有一个当前页面使用JqueryUIHelpers来呈现JQuery UI DatePicker

我已经按照以下提示: JqueryUIHelpers - Getting Started

在我开始将代码移动到局部视图之前,一切正常。 点击后不再呈现datepicker

我已经读过,正常的JQueryUI用法会出现同样的问题,我应该移动将datepicker呈现给基本视图的JavaScript(类似$('#date').datepicker())。 但是,JQueryUIHelpers代码如下:

@Html.JQueryUI().Datepicker("date")

我能否知道是否还能让它发挥作用?

2 个答案:

答案 0 :(得分:0)

感谢Kartikeya的建议,设法让日期选择工作。

首先我定义了DatePicker:

@Html.JQueryUI().Datepicker("date")

在部分视图的document.ready()函数中,我再次重新初始化了DatePicker: $('#date').datepicker();

现在一切正常。

修改 再次感谢Kartikeya的建议。在部分视图中包含JQueryUI文件将消除在document.ready()功能块中再次重新初始化DatePicker的需要。

我所做的是包括这一行:

@Scripts.Render("~/bundles/jqueryui")

在我的局部视图中,然后点击所有内容。

顺便说一句,现在我知道"要做什么才能让它发挥作用",我能否知道"为什么它以这种方式运作"?

答案 1 :(得分:0)

我正在回答部分解释您的问题,因为评论部分没有适当的空格。

是的,很多人认为这可能是asp.net mvc局部视图中的一个错误但是如果我们在内部编写@Html.JQueryUI().Datepicker("date")并且在某处内部将datepicker初始化为:

$(document).ready(function(){
   $('#date').datepicker();
});

即使我们不需要编写上面的jquery代码,但是datepicker只是以这种方式初始化,所以如果我们在视图中使用datepicker但是如果我们在局部视图中使用datepicker然后场景更改,因为部分视图通常用于ex的动态内容: - 如果我们想要动态更改某些html,那么我们使用局部视图,部分视图返回的动态html显示在视图中,所以这里出现问题,因为部分视图没有document.ready()事件触发到初始化datepicker所以这个问题发生了,我的两个评论和你的两个答案可以解决它。在上面的行我一次又一次写动态HTML因为这个问题是因为这个动态的HTML只是为了克服这个我们也可以使用事件委托即jquery中的.on()或者将datepicker as为inly(给所有datepicker textboxes一个类说'textbox'):

$('body').on('focus',".textbox", function(){
  $(this).datepicker();
});​

谢谢.. !!