2014-01-12 31 views
0

我有一个JavaScript函数,用于调整单击按钮时的日期。它使用getDate()函数并从文本框中的当前日期值中减去7天。我看到的问题,我尝试了各种方法来纠正,但似乎没有任何工作是,当我点击按钮它显示正确的日期,当我再次点击它,而不是回到另一个七天,它跳转到完全不同的日期 - 例如,如果文本框中的日期是2014年5月1日,我点击该按钮它会到2014年12月29日,我再次点击它,我得到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

将scriptblock放置在页面的末尾,或者如果使用jQuery,则使用'window.onload'(或'$(document).ready()') – Stephen