2013-11-21 2 views
2

Я хочу использовать datepicker как часть проекта «В этот день в истории».Есть ли способ сделать работу jQuery datepicker без лет?

Идея состоит в том, что пользователь выбирает день, например «20 ноября», и проект показывает ему, какие исторические события произошли в этот день в разные годы.

Учитывая, что они выбирают общий день, а не конкретную дату (например, «20 ноября 2013 года»), я бы хотел, чтобы datepicker был годным агностиком.

Severalpeoplehave asked что-то подобное, но они просили пути шкуры года.

Я не хочу прятать год. Я хочу, чтобы сборщик был ignore год.

В начале первой недели не должно быть ярлыков («Понедельник», «Вторник» и т. Д.) И не должно быть пустых дней. В случае февраля он перечислит 29 дней.

Таким образом, вместо того, чтобы что-то вроде этого ...

NOVEMBER 
Mo Tu We Th Fr Sa Su 
-- -- -- 1 2 3 4 
5 6 7 8 9 10 11 
12 13 14 15 16 17 18 

... Было бы, как этот

NOVEMBER 
1 2 3 4 5 6 7 
8 9 10 11 12 13 14 
15 16 17 18 19 20 21 

Есть ли способ изменить DatePicker JQuery UI, чтобы работать, как это? Или другая библиотека, которая предлагает вариант без учета года для своего датпикера?

+0

* «Есть ли способ изменить jQuery UI's datepicker, чтобы работать так» *, вероятно, но это потребует изменения/расширения частных методов виджета. Такая функциональность не встроена. –

+1

Похоже, что было бы быстрее создавать свои собственные, чем расширять пользовательский интерфейс jQuery, так как ваши требования довольно просты. – Mathletics

+2

Этот год необходим, чтобы определить, в какой день недели включена конкретная дата. Возможно, вам захочется просто создать статический календарь и изменить имена месяцев. Datepicker может быть немного переполненным для вашего сценария. – NaNpx

ответ

2

Вы могли бы, возможно, сделать это путем переопределения метода Date.prototype.getDay():

JS:

$(function() { 
    //override getDay() 
    Date.prototype.getDay = function() { 
     //change getDay() so that the first day of the month is always at 
     // the beginning of the week 
     return ((this.getDate()-1) % 7); 
    } 

    //create the datepicker that does not display year 
    $("#datepicker").datepicker({dateFormat: "d MM"}); 
}); 

CSS (скрыть год и дней в DatePicker):

.ui-datepicker-year, .ui-datepicker-calendar thead { 
    display: none; 
} 

Fiddle

+0

Это определенно работает, но может вызвать серьезные проблемы для других скриптов. Было бы лучше локализовать это изменение на выходе пользовательского интерфейса jQuery. – Mathletics

+0

@Mathletics Я согласен, это может вызвать некоторые проблемы. Это также может вызвать проблемы, которые были бы ужасными для отладки, если бы вы не знали, что кто-то ушел и где-то застрял в коде. – ioums

Смежные вопросы