У меня есть следующий яваскрипт функция, которая должна добавить в неделю до даты формы и сохранить его в виде на следующий раз, когда пользователь нажимает на ссылкеJavascript добавить дни к заданной дате
function changeDate()
{
var start = document.getElementById('start_date').value;
var d = 7;
var myDate=new Date(start);
myDate.setDate(myDate.getDate()+parseInt(d));
document.getElementById('start_date').value = (myDate.getFullYear()) + '-' + (myDate.getMonth()+1) + '-' + (myDate.getDate());
}
Моей форму выглядит что-то вроде этого
<?php
$start_date = "2014-09-20";
?>
<form name="myForm" method="post">
<input type="text" name="start_date" id="start_date" value="<?php echo $start_date?>"/>
<a href="#" onclick="changeDate();">Next</a>
</form>
Этот скрипт работает отлично увеличивающимся в неделю каждый раз, когда пользователь нажимает на гиперссылку «Next», проблема происходит с месяца границей. Когда дата «2014-09-27», скрипт правильно вычисляет следующую дату и отображает «2014-10-04». Проблема возникает при следующем щелчке, как только месяц изменился при следующем сбое сценария. Я не понимаю, почему, я попытался предупредить start_date, и это правильно «2014-10-04», но как только выполнить новую команду Date, она возвращает недопустимую дату.
Странно то, что он не терпит неудачу на границе месяца (это действительно правильно рассчитано), но в следующий раз это не удастся. Я думал, что это может быть связано с текущим месяцем, но это не имеет значения, если я начну с start_date, установленного на «2014-11-03», он будет продолжать правильно добавлять до тех пор, пока я не покажу дату «2014-12-01», но в следующий раз не удастся.
Любая помощь очень ценится
+1, moment.js милый. – Amadan
Я только что проверил тест с новой датой («2014-9-27»). Chrome и Node принимают его, Firefox и IE10 - нет. – dusky