0

J'ai l'extrait de code suivant dans jsfiddle. J'essaie d'ajouter un nombre donné de jours au calendrier.Sélecteur de date-heure Bootstrap en ajoutant des mois au lieu de jours

Code HTML:

<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> 

Le code ci-dessus est l'ajout mois au lieu de jours. Si je choisis la date

01/06/2017 la sortie sera 19/9/2017

Si je hardcode la date:

 newDate.setDate(oldDate.getDate() + 11); 

Cela me donnera la sortie que je veux. Quelqu'un peut-il m'aider à ce sujet?

Répondre

1

essayer ...

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); 

lien JSFfiddle pour même - http://jsfiddle.net/sdyoxx2r/9/

+0

Heureux que ça aide :) @Tanja Forsberg –

+0

Il y a une complication cependant. Si je choisis la date '01/08/2017' le résultat est' 12/6/2017'. Il incrémente le jour seulement. Pouvez-vous s'il vous plaît vérifier sur le jsfiddle? –

+0

ok, je vais regarder dans .. et revenir à vous. –

0

Lorsque vous obtenez la valeur de <input type="hidden" value="11" id="days" /> il retournera la valeur sous forme de chaîne.

Vous avez donc besoin de convertir la valeur des jours de chaîne en nombre entier.

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); 
+0

Merci pour la suggestion. J'ai un autre bug mentionné dans le commentaire ci-dessus. –

+0

essayez ce 'newDate.setMonth (oldDate.getMonth(), oldDate.getDate() + jours);' –