JQuery-оборот года по месяцам-jQuery UI Slider
Я столкнулся с интересной проблемой, пытаясь создать более удобный интерфейс типа datepicker. Я использую ползунок, чтобы изменить месяц в списке календаря (март 2010, апрель 2010, май 2010 и т. д.) Очень простой макет здесь:
Http://dev.primestudiosllc.com/riverbank/
Мне нужно будет сначала получить текущий месяц и установить его в качестве начала слайдера. Тогда мне нужно будет установить максимум на 18 месяцев в будущем. Эта часть довольно проста. Вопрос я сталкиваюсь с тем, что когда я попадаю в декабрь, следующая позиция на слайдере должна изменить год. Вот с чем у меня проблемы. Вот текущий код, который я использую для слайдера:
$(function() {
$("#slider-range-min").slider({
range: "min",
value: 3,
min: 1,
max: 18,
animate: true,
slide: function(event, ui) {
$("#calendar").calendarWidget({
month: ui.value,
year: 2010
})
}
});
$("#calendar").calendarWidget({
month: 2,
year: 2010
})
;})
Пожалуйста, дайте мне знать, что я могу сделать, чтобы это сработало. Большое всем спасибо!
- B
3 ответов:
Sorpigal прав... но я предлагаю
parseIntвместоint... вот это демо$(function() { $("#slider-range-min").slider({ range: "min", value: 3, min: 1, max: 18, animate: true, slide: function(event, ui) { $("#calendar").calendarWidget({ month: (ui.value % 12), year: 2010 + parseInt(ui.value/12) }) } }); $("#calendar").calendarWidget({ month: 2, year: 2010 }) ;})
Попробуйте:
month: ui.value%12,Когда декабрь пройдет, он "обернется"
И за год:
year: 2010 + int(ui.value>0?ui.value/12:0)Таким образом, он также увеличивает год.
Решение
Ту часть, где вы на оползень звоните
#calendar, Вы должны пересчитать и месяц и год:$(function() { //on the beginning of the script var smonth = 2, syear = 2010; //start-month, start-year $("#slider-range-min").slider({ range: "min", value: smonth, min: smonth, /* THIS WORKS FOR */ max: smonth+17, /* NEXT 18 MONTHS */ animate: true, slide: function(event, ui) { $("#calendar").calendarWidget({ month: (ui.value-1) % 12, //months are 0..11, so if you want to have 3=march on slider, -1 from ui.value :] year: syear+parseInt(ui.value / 12) }) } }); $("#calendar").calendarWidget({ month: smonth, year: syear }) ;})
Comments