我有一个带有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
}
怎么做?(在第一个字段后一天设置第二个字段的日期。)
答案 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
,如果用户再次更改第一个输入,您将丢失第二个日期,用户不会注意到,导致挫折/错误。