JQuery - 月数上的年度营业额 - Jquery UI Slider

时间:2010-03-10 14:39:22

标签: javascript jquery jquery-ui calendar uislider

在尝试创建更有用的类似日期选择器的界面时,我遇到了一个有趣的问题。我使用滑块更改列出日历的月份(2010年3月,2010年4月,2010年5月等)这里有一个非常简单的模型:

http://dev.primestudiosllc.com/riverbank/

我需要先获取当前月份并将其设置为滑块的开头。然后我将需要将最大值设置为18个月。那部分非常简单。我遇到的问题是,当我点击12月时,滑块上的下一个位置需要更改年份。这就是我遇到的麻烦。这是我用于滑块的当前代码:

 $(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 个答案:

答案 0 :(得分:2)

Sorpigal是对的...但我建议parseInt代替int ......这里是demo

 $(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              
     })
;})​

答案 1 :(得分:0)

尝试:

 month: ui.value%12,

当12月通过时,它将“环绕”

一年:

 year: 2010 + int(ui.value>0?ui.value/12:0)

所以它也增加了一年。

答案 2 :(得分:0)

溶液

您在onSlide上致电#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        
  })
;})