Reputation: 1558
I have the following code snippet in jsfiddle. I'm trying to add given number as days to the calendar.
HTML Code:
<input id="firstDate"/>
<input type="hidden" value="11" id="days">
<br/>
<input id="secondDate"/>
Javascript:
<script>
var pickerOptsGeneral = {
format: "dd/mm/yyyy",
autoclose: true,
minView: 2,
maxView: 2
};
$('#firstDate')
.datetimepicker(pickerOptsGeneral)
.on('changeDate', function(ev){
var days = document.getElementById("days").value;
var oldDate = new Date(ev.date);
var newDate = new Date();
newDate.setDate(oldDate.getDate() + days);
secondDate.val(newDate.getDate()+"/"+(newDate.getMonth()+1)+"/"+newDate.getFullYear());
secondDate.datetimepicker('update');
});
var secondDate = $('#secondDate').datetimepicker(pickerOptsGeneral);
</script>
The above code is adding months instead of days. If i select the date
01/06/2017
the output will be 19/9/2017
If I hardcode the date:
newDate.setDate(oldDate.getDate() + 11);
This will give me the output I want. Can anyone help me on this ?
Upvotes: 0
Views: 1222
Reputation: 3329
try this...
var pickerOptsGeneral = {
format: "dd/mm/yyyy",
autoclose: true,
minView: 2,
maxView: 2
};
$('#firstDate')
.datetimepicker(pickerOptsGeneral)
.on('changeDate', function(ev){
var days = parseInt(document.getElementById("days").value);
var oldDate = $("#firstDate").data("datetimepicker").getDate();
var oldDateOriginal = new Date(oldDate);
var newDate = new Date(oldDateOriginal);
newDate.setDate(newDate.getDate() + days);
secondDate.val(newDate.getDate()+"/"+(newDate.getMonth()+1)+"/"+newDate.getFullYear());
secondDate.datetimepicker('update');
});
var secondDate = $('#secondDate').datetimepicker(pickerOptsGeneral);
JSFfiddle link for same - http://jsfiddle.net/sdyoxx2r/9/
Upvotes: 1
Reputation: 1477
When you get the value of <input type="hidden" value="11" id="days" />
it will return value as string.
So you need to convert value of days from string to integer .
var pickerOptsGeneral = {
format: "dd/mm/yyyy",
autoclose: true,
minView: 2,
maxView: 2
};
$('#firstDate').datetimepicker(pickerOptsGeneral).on('changeDate',function(ev){
var days = parseInt($('#days').val());
var oldDate = new Date(ev.date);
var newDate = new Date();
newDate.setDate(oldDate.getDate() + days);
secondDate.val(newDate.getDate()+"/"+newDate.getMonth()+1)+"/"+newDate.getFullYear());
secondDate.datetimepicker('update');
});
var secondDate = $('#secondDate').datetimepicker(pickerOptsGeneral);
Upvotes: 0