Asp.net mvc 2 JQuery日期选择器图标仅在单击文本框后出现

Asp.net mvc 2 JQuery日期选择器图标仅在单击文本框后出现,asp.net-mvc-2,jquery-ui-datepicker,Asp.net Mvc 2,Jquery Ui Datepicker,我正在ASP.NET MVC应用程序中使用jQuery DatePicker控件 我创建了一个名为DateTime.ascx的控件,这样每当我调用Html.TextBoxFor()方法并向其传递DateTime类型的字段时,该控件就会发挥作用,并呈现一个textbox+日期选择器,覆盖仅生成一个textbox的标准功能 这是控件: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.Dat

我正在ASP.NET MVC应用程序中使用jQuery DatePicker控件

我创建了一个名为DateTime.ascx的控件,这样每当我调用Html.TextBoxFor()方法并向其传递DateTime类型的字段时,该控件就会发挥作用,并呈现一个textbox+日期选择器,覆盖仅生成一个textbox的标准功能

这是控件:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" %>
<%=Html.TextBox("", 
    (Model.HasValue ? Model.Value.ToString("MM/dd/yyyy") : DateTime.Today.ToShortDateString()), 
    new { @class = "UseDatePicker" } )%>
现在,我的问题是:当页面加载时,只会出现一个文本框来编辑datetime字段。当我点击文本框时,日历会按预期弹出,同时按钮图像也会出现。我想让buttonn图像在页面加载时,在用户开始与控件交互之前就可以看到


谢谢。

问题是,在单击文本框之前,您不会绑定日期选择器,因此在加载之前没有可绑定的按钮。您应该只绑定日期选择器,是否有理由在每次单击按钮时取消绑定并重新绑定?根据您目前的解释,这将更有意义:

$(document).ready(function () {
    $(".UseDatePicker").each(function(i) {
        $(this).datepicker({
            showOn: "both",
            buttonImage: "../../Content/calendar.gif",
            buttonImageOnly: true,
            changeMonth: true,
            changeYear: true
        });
    });
});

这将遍历每个需要日期选择器的字段,并将选择器绑定到该文本框。

问题是,在单击文本框之前,您不会绑定日期选择器,因此在加载该文本框之前,没有要绑定的按钮。您应该只绑定日期选择器,是否有理由在每次单击按钮时取消绑定并重新绑定?根据您目前的解释,这将更有意义:

$(document).ready(function () {
    $(".UseDatePicker").each(function(i) {
        $(this).datepicker({
            showOn: "both",
            buttonImage: "../../Content/calendar.gif",
            buttonImageOnly: true,
            changeMonth: true,
            changeYear: true
        });
    });
});

这将遍历每个需要日期选择器的字段,并将选择器绑定到该文本框。

没错,您现在工作得很好。我仍然是jQuery的初学者,对这个脚本没有太多批判的眼光。非常感谢。你现在工作得很好。我仍然是jQuery的初学者,对这个脚本没有太多批判的眼光。非常感谢。
$(document).ready(function () {
    $(".UseDatePicker").each(function(i) {
        $(this).datepicker({
            showOn: "both",
            buttonImage: "../../Content/calendar.gif",
            buttonImageOnly: true,
            changeMonth: true,
            changeYear: true
        });
    });
});