2016-09-18 3 views
0

У меня есть 2 bootstrap 3 datepickers на странице. Одна из них - дата выпуска другой даты. Я хочу установить due_date на issue_date + transactionDaysTerms (например, 14 дней).Bootstrap 3 datepicker and moment issue

$('#issue_date').datepicker({ 
    }).on('changeDate', function(event){ 

     $(this).datepicker('hide'); 
     var calculatedEndDate = moment($('#issue_date').val()).add(transactionDaysTerms, 'days'); 
     $('#issue_date').datepicker('setEndDate', calculatedEndDate); 
     $('#due_date').datepicker('setEndDate', calculatedEndDate); 

    }).on('clearDate', function(event){ 
     $(this).datepicker('setDate', today); 
    }); 

Я пробовал различные форматы с moment безрезультатно. Этот код не с

Uncaught TypeError: date.match is not a function 

Как я могу получить форматирование даты из moment.js работать с DatePicker?

ответ

0

не могли бы вы просто использовать getDate, чтобы получить временную метку DatePicker, а затем умножить дни, чтобы получить миллисекунды, добавьте его и установите конечную дату

$('#issue_date').datepicker().on('changeDate', function(event) { 

    $(this).datepicker('hide'); 

    var date = $(this).datepicker('getDate'); 
    var days = transactionDaysTerms * 24 * 60 * 60 * 1000; 

    var calculatedEndDate = new Date(date.getTime() + days); 

    $('#issue_date, #due_date').datepicker('setEndDate', calculatedEndDate); 

}).on('clearDate', function(event) { 
    $(this).datepicker('setDate', today); 
}); 

FIDDLE

+0

Привет, @adeneo, он не работает, поскольку дата вытягивается в этом формате. Ср. 21 2016 00:00:00 GMT + 1000 (AUS Eastern Standard Time) от сборщика. – TheRealPapa

+0

Нет, дата должна быть javascript-объектом, если вы используете 'console.log (typeof date)', что вы получаете – adeneo

+0

[docs] (https://bootstrap-datepicker.readthedocs.io/en/latest/methods .html # getdate) также ясны ... * «Возвращает локализованный объект даты, представляющий внутренний объект даты ...» * – adeneo

0

Этот работает отлично.

$('#issue_date').datepicker({ 
    }).on('changeDate', function(event){ 
     $(this).datepicker('hide'); 
     var calculatedEndDate = moment($(this).datepicker('getDate')).add(transactionDays, 'days').toDate(); 
     $('#issue_date').datepicker('setEndDate', calculatedEndDate); 
     $('#due_date').datepicker('setDate', calculatedEndDate); 
    }).on('clearDate', function(event){ 
     var calculatedEndDate = moment(today).add(transactionDays, 'days').format('L'); 
     $('#issue_date').datepicker('setEndDate', calculatedEndDate); 
     $('#due_date').datepicker('setDate', calculatedEndDate); 
    }); 

мне просто нужно .toDate() в конце момента вызова.

+0

Нет, вам нужно было использовать '.datepicker ('getDate')', а не '$ ('# issue_date'). Val()', что означает, что мой ответ работает отлично. Я немного изменил его, поскольку 'setDate' по какой-то причине, похоже, не принимает временную метку, а только другой объект даты. – adeneo