2014-01-12 2 views
0

У меня есть функция JavaScript, которая регулирует дату нажатия кнопки. Он использует функцию getDate() и вычитает 7 дней с текущего значения даты в текстовом поле. Проблема, которую я вижу, и я пробовал различные способы исправить, но ничего не работает, так это то, что когда я нажимаю кнопку, она показывает правильную дату, когда я нажимаю на нее снова, а возвращаюсь еще на семь дней, она переходит к полностью другая дата - например, если дата в текстовом поле - 05/01/2014, я нажимаю кнопку, она идет до 29/12/2014, я нажимаю ее снова, я получаю 28/11/2015 - НЕ 22/12/2014.JavaScript getDate() неправильно корректирует дату при добавлении и вычитании

Вот мой код JavaScript:

var fromDateIn = new Date(formatDate(document.getElementById('<%= txtFromDate.ClientID%>').value)); 
     var newdate = new Date(fromDateIn); 
     newdate.setDate(newdate.getDate() - 7); 
     var nd = new Date(newdate); 

     document.getElementById('<%= txtFromDate.ClientID%>').value = formatDate(nd); 

    function formatDate(inputDate) { 

     var d = new Date(inputDate || Date.now()), 
    month = '' + (d.getMonth() + 1), 
    day = '' + d.getDate(), 
    year = d.getFullYear(); 

     if (month.length < 2) month = '0' + month; 
     if (day.length < 2) day = '0' + day; 

     return [day, month, year].join('/'); 

    } 

Может кто-то пожалуйста указать мне, как я могу последовательно вычитать 7 дней от того, что текущее значение даты в текстовом поле?

Благодаря

+0

В вашем примере у вас есть за день до месяца во входной строке. Конструктор даты хочет, чтобы месяц был до дня. Возможно, это часть проблемы. – Alex

ответ

0

Ваш вопрос в том, что вы используете ваш отформатированный дату построить новый fromDateIn

Инициализировать значение на нагрузке, а также использовать переменную newdate сделать расчет, вызовите функцию changeDate() на нажмите кнопку.

var fromDateIn = new Date(formatDate(document.getElementById('<%=txtFromDate.ClientID%>').value)); 
var newdate = new Date(fromDateIn); 

function changeDate() 
{ 
    newdate.setDate(newdate.getDate() - 7); 
    document.getElementById('<%= txtFromDate.ClientID%>').value = formatDate(newdate); 
} 

function formatDate(inputDate) 
{   
    var d = new Date(inputDate || Date.now()), 
    month = '' + (d.getMonth() + 1), 
    day = '' + d.getDate(), 
    year = d.getFullYear(); 

    if (month.length < 2) month = '0' + month; 
    if (day.length < 2) day = '0' + day;   
    return [day, month, year].join('/');   
} 
+0

Привет Извините за задержку в ответе, но можете ли вы посоветовать, где в javascript я установил значение fromDateIn? Если я создам функцию Init, значение даты еще не будет существовать, и значение не будет доступно для изменения? – Andy5

+0

Поместите скриптблока в конце страницы или используйте 'window.onload' (или' $ (document) .ready() ', если вы используете jQuery) – Stephen

Смежные вопросы