Ciao a tutti. Stavo lavorando ad un progetto e mi sono imbatutto in un errore che non capisco.
Il programma deve prendere in input una data iniziale (uso il datepicker di jquery) nel formato dd/mm/yyyy e un numero di giorni sommare questi giorni alla data e restituirmi una data finale, niente di complicato...solo che arrivando al 31/10/2010 se gli sommo 1 rimane fermo al 31/10/2010 e di conseguenza mi sballa tutte le altre date di uno....non capisco onestamente dove possa essere sbagliato il codice javascript.
ecco il codice html/php:
codice:
<html>
<?php
$today = date("d/m/Y");
?>
<head>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/script.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.5.custom.min.js"></script>
<link type="text/css" href="css/jquery-ui-1.8.5.custom.css" rel="stylesheet" />
<script type="text/javascript">
<!--
$(document).ready(function(){
$('.datepicker').datepicker({
dateFormat: 'dd/mm/yy',
// showOn: "button",
// buttonImage: "css/images/calendar.gif",
// buttonImageOnly: true
});
});
-->
</script>
<title>Calcolo data</title>
</head>
<body>
<form name="form1">
<input type="text" name="inception" class="datepicker" value="<?php echo $today; ?>" />
<input type="text" name="num_days" size="5" onchange="calcolaData(this.value);" /></p>
<input type="text" name="expiration" /></p>
</form>
</body>
</html>
e la funzione javascript:
codice:
function calcolaData(days){
var dataStart = document.form1.inception.value.split("/");
var inception = new Date(dataStart[2], (dataStart[1]-1), dataStart[0]);
var dataEnd = addDays(inception, days);
alert(dataEnd);
if(dataEnd.getDate() < 10){
var dayEnd = "0"+dataEnd.getDate();
}
else{
var dayEnd = dataEnd.getDate();
}
if((dataEnd.getMonth()+1) < 10){
var monthEnd = "0"+(dataEnd.getMonth()+1);
}
else{
var monthEnd = dataEnd.getMonth()+1;
}
document.form1.expiration.value = dayEnd + "/" + monthEnd + "/" + dataEnd.getFullYear();
}
function addDays(data, giorni){
return new Date(data.getTime() + giorni*86400000)
}