【问题标题】:add +1 for month indexing in pickadate在pickadate中为月份索引添加+1
【发布时间】:2015-05-25 11:57:37
【问题描述】:

我想禁用除 start_date 和 end_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 值范围内的日期。

【问题讨论】:

  • leave_start_date 和 leave_end_date 值是否来自pickadate?还是这些来自其他文本字段?
  • 这是另外两个带有pickadate的文本字段。

标签: javascript jquery ruby-on-rails ruby-on-rails-4 pickadate


【解决方案1】:

我认为第一个问题是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())

并且偏移月份将得到正确修复。

【讨论】:

  • 当我进行第一次剪辑时,我没有意识到月份偏移也是问题的一部分。很高兴这成功了。
猜你喜欢
  • 1970-01-01
  • 2018-03-26
  • 1970-01-01
  • 2018-03-01
  • 2019-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多