Значок JQuery DatePicker появляется только после нажатия на текстовое поле - PullRequest
1 голос
/ 09 декабря 2010

Я использую элемент управления jQuery DatePicker в приложении ASP.NET MVC.

Я создал элемент управления с именем DateTime.ascx, чтобы каждый раз, когда я вызываю метод Html.TextBoxFor (), передавая ему полеТип DateTime, этот элемент управления вступает в игру, и текстовое поле + средство выбора даты отображается, переопределяя стандартную функциональность, которая создает только текстовое поле.

Это элемент управления:

<%@ 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" } )%>

А вотпример вызова:

<%: Html.EditorFor(model => model.Project.IssueDate)%>

Теперь я также включаю на главной странице скрипт под названием DatePickerConfig.js, который, ну, в общем, настраивает DatePicker.Вот оно:

$(document).ready(function () {
    $(".UseDatePicker").live('click', function () {
        $(this).datepicker('destroy').datepicker({
            showOn: "both",
            buttonImage: "../../Content/calendar.gif",
        buttonImageOnly: true,
            changeMonth: true,
            changeYear: true
        }).focus();
    });
});

Теперь моя проблема: при загрузке страницы появляется только текстовое поле для редактирования поля даты и времени.Когда я нажимаю на текстовое поле, календарь появляется, как и ожидалось, и в то же время появляется изображение кнопки.Мне бы хотелось, чтобы изображение кнопки отображалось сразу после загрузки страницы и до того, как пользователь начнет взаимодействовать с элементом управления.

Спасибо.

1 Ответ

0 голосов
/ 09 декабря 2010

Проблема в том, что вы не привязываете средство выбора даты, пока не нажмете на текстовое поле, поэтому нет кнопки для привязки, пока она не загрузится.Вам просто нужно привязать указатель даты. Есть ли причина, по которой вы отменяете привязку и перепривязываете при каждом нажатии кнопки?Согласно вашему текущему объяснению, это будет иметь больше смысла:

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

Это будет проходить через каждое поле, ожидающее указатель даты, и привязывать средство выбора к этому текстовому полю.

...