1

我有一个带有 2 个日期输入字段的 mootools datepicker(Arian / monkeyphysics)。
我想在第一个字段之后的一天设置第二个字段的日期。

到目前为止,我有:

window.addEvent("domready", function(e){
  new DatePicker('#arrival_date', { positionOffset: { x: -3, y: 5 }});
  new DatePicker('#departure_date', { positionOffset: { x: -3, y: 5 },onShow: function(){test();}
});

function test(){
  firstvalue = Date.parse($('arrival_date').value);
  newvalue = firstvalue.increment(); //ad 1 day to first input date
  console.log(newvalue); // Logs ok:Fri Jan 16 1970 22:24:11 ...

  $('arrival_date').set('value', newvalue );         //doesn't work
  $$('#departure_date').attach('#arrival_date');     //doesn't work
  $$('#departure_date').select(newvalue );           //doesn't work
}

怎么做?(将第二个字段的日期设置在第一个字段之后的一天。)

4

1 回答 1

1

该版本的 DatePicker 使用隐藏的输入。所以你看到的不是你输入的值,它有一个 unix 日期戳。

如果您注意到那Date.parse($('arrival_date').value);是在 70 年代,那是因为 javascript 使用毫秒,而 unix 时间以秒为单位。要获得“真正的”一天,$('arrival_date').value您需要乘以 1000。但您实际上不需要那个。

要使第二个 DatePicker 从第一个获取日期,您可以使用以下命令:

onSelect: function (){
    var depDate = $('departure_date');
    if (depDate.value == ""){
        depDate.value = $('arrival_date').value + 86400;
    }
}

这将在第一个日期选择器日期添加一天,if第二个为空。问题是在您打开日期选择器之前您不会看到更改,因此如果您以编程方式更改值,用户将看不到。这意味着如果没有if,如果用户再次更改第一个输入,您会丢失第二个日期并且用户不会注意到,从而导致沮丧/错误。

于 2013-07-17T23:40:49.290 回答