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

587   3  

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

    Ничего не найдено.