mootools datepicker从其他datepicker设置值

时间:2013-07-12 19:44:24

标签: javascript datepicker mootools

我有一个带有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
}

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

1 个答案:

答案 0 :(得分: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;
    }
}

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