我想禁用除start_date和end_date范围以外的所有日期,例如:date从2015年5月26日开始到2015年5月29日,因此禁用开始之前和结束之后的所有日期。为此,我使用的是Pickadate和Pickadate月份索引从零开始。

$('.datepicker2').pickadate({
        format: 'dd/md/yyyy',
        selectMonths: true,
        selectYears: 25,
min: [$("#leave_start_date").val().split("/").map(Number).reverse()],
max: [$("#leave_end_date").val().split("/").map(Number).reverse()]
});


但它不起作用。它禁用所有剩余日期为当前日期。
请指导我如何解决此问题。我只想禁用那些不在start_date和end_date值范围内的日期。

最佳答案

我认为第一个问题是minmax的值可以采用类似[2014,05,26]的数组,但是对于该map,我怀疑您正在发送嵌套在数组[[2014,05,26]]中的数组

'15/05/2015'.split('/').map(Number)
JS> [15, 5, 2015]
'15/05/2015'.split('/').map(Number).reverse()
JS> [2015, 5, 15]  <<<<< this is what (i think) pickadate wants
['15/05/2015'.split('/').map(Number).reverse()]
JS> [Array[3]]    <<<<< this is what (i think) you are sending


另外,正如您在标题中所述,pickadate期望的月计数器从0开始。

function formatDateForPickadate(date_string) {
  vals = date_string.split('/').map(Number).reverse()
  vals[1] -= 1
  return vals
}


你可以做:

min: formatDateForPickadate($("#leave_start_date").val()),
max: formatDateForPickadate($("#leave_end_date").val())


并且偏移月份将得到正确的固定。

09-26 04:34