6

我正在尝试做一个简单的页面,它需要一个日期(输入类型 TEXT),一旦输入日期,另一个字段将在输入中添加 7 天并在文本输入中显示日期(+7 天)。我的jQuery知识有限,所以我可能有一个小错误......

<html> 
<head> 
<title>Date Plus 7 Days</title> 
<script type="text/javascript"> 
$(document).ready(function(){
    function DateFromString(str){ 
        str = str.split(/\D+/);
        str = new Date(str[2],str[0]-1,(parseInt(str[1])+7));
        return MMDDYYYY(str);
    }
    function MMDDYYYY(str) {
        var ndateArr = str.toString().split(' ');
        var Months = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec';
        return (parseInt(Months.indexOf(ndateArr[1])/4)+1)+'/'+ndateArr[2]+'/'+ndateArr[3];
    }

    function Add7Days() {
        var date = $('#start_date').val();
        var ndate = DateFromString(date);
        return ndate;
    }

    $('#start_date').change(function(){
        $('#end_date') = Add7Days();
    })

});

</script> 
</head> 
<body> 

Start Date
<input type="text" id="start_date" value=''> 
<br>
End date
<input type="text" id="end_date" value=''> 

</body> 
</html>  

我做错了什么?

谢谢!

4

4 回答 4

10

您已尝试将对象分配给$('#end_date'). jQuery 通过改变输入框的值来以不同的方式处理这个问题.val('value-here')

尝试这个:

$('#start_date').change(function(){
    $('#end_date').val(Add7Days());
});

看到这个小提琴:http: //jsfiddle.net/zydZ2/

此外,Moment.JS 非常适合解析和操作日期,我强烈建议您检查一下:http ://momentjs.com/

希望这可以帮助!

于 2013-07-17T02:55:54.267 回答
8

在功能上将 7 天添加到现有日期可以通过使用来实现

var today_date = new Date()
alert(today_date)
today_date.setDate(today_date.getDate() + 7)
alert(today_date)

这将增加 7 天到现有日期,如果它是 31,而不是下个月 7 日

希望这有帮助

于 2013-07-17T03:56:42.057 回答
2

您可以使用 JQuery 和 JqueryUI datepicker 来做到这一点。

    $('#start_date').datepicker({
        dateFormat: 'mm/dd/yy',
        minDate: 0,

    });
    $("#end_date").datepicker({
        dateFormat: 'mm/dd/yy',
        minDate:  7,

    });

    var _dt = new Date();
    var _dt = _dt.setDate(_dt.getDate());       
    $("#start_date").datepicker("setDate","mm/dd/yy", _dt);
    $("#end_date").datepicker("setDate", "mm/dd/yy", _dt);      

你可以参考这个http://jsfiddle.net/o9grLdf0/12/

min = 0 for input startdate = today date and min = 7 mean today + 7 day for enddate

于 2013-11-25T07:25:00.593 回答
0
function listDatesBetweenTwoDates(S_dateA, S_dateB) {
    var O_dateA = moment(S_dateA).add(1, 'd');
    var O_dateB = moment(S_dateB).add(1, 'd');
    var O_itr = moment.twix(O_dateA, O_dateB).iterate("days");
    var A_range = [];
    while (O_itr.hasNext()) {
        A_range.push(O_itr.next().toDate())
    }
    return A_range;
}
于 2015-07-09T18:03:59.310 回答