4

What I'm trying to do:
I'm trying to create a datepicker that when a date is selected it will return a date 2 days or 48 hours later, only during a work week (Monday-Friday) in another input field.

我在这里找到了一个教程,这让我大部分时间都受益,除了当你选择一个周五的日期时,它会返回周日,这不起作用,因为它不是工作周的一部分。

我需要它来返回这样的东西:
如果星期一返回下星期三的日期
如果星期二 返回下周四的日期
如果星期三 返回下周五的日期
如果星期四 返回下周一的日期
如果星期五返回下周二的日期
如果星期六返回下周二的日期
如果星期天返回下周二的日期 返回下一个星期二的日期

这是到目前为止的代码:

<input id="datepicker" type="text">
<p id="dateoutput"></p>
<script type="text/javascript">
    $(function() {
        $("#datepicker").datepicker({
            dateFormat: "mm-dd-yy",
            onSelect: function(dateText, inst) {

                var date = $.datepicker.parseDate(inst.settings.dateFormat || $.datepicker._defaults.dateFormat, dateText, inst.settings);
                var dateText1 = $.datepicker.formatDate("D, mm-dd-yy", date, inst.settings);
                date.setDate(date.getDate() + 2);
                var dateText2 = $.datepicker.formatDate("D, mm-dd-yy", date, inst.settings);
                $("#dateoutput").html(dateText2);
            }
        });
    });
</script>

我遇到的另一个问题是让返回的日期填充到另一个输入字段中。(现在它只是填充 ap 标签)。

任何帮助表示赞赏,在此先感谢。

演示:http: //jsfiddle.net/mpoisel/LDaXa/

4

1 回答 1

2

这就是我将如何去做...

此外,关于填充另一个 的问题input,请务必使用.val().


演示:http: //jsfiddle.net/dirtyd77/Qt6QB/

$(function () {
    $("#datepicker").datepicker({
        dateFormat: "mm-dd-yy",
        beforeShowDay: $.datepicker.noWeekends, //disables weekends
        onSelect: function (dateText, inst) {
            var date = new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay);
            var day = date.getDay();
            var addDays = 2;
            if(day === 4 || day === 5){
                addDays = 4;
            }

            var nextDate = new Date(date.setDate(date.getDate() + addDays));

            //for p, use .html() or .text()
            $("#dateoutput1").html($.datepicker.formatDate('D, mm-dd-yy', nextDate)); 

            //for input, use .val()
            $("#dateoutput2").val($.datepicker.formatDate('D, mm-dd-yy', nextDate));
        }
    });
});

如果您还有其他问题,请告诉我!快乐编码!


编辑:

这是您提供的新演示。

要更改minDate基于星期几的日期,请尝试执行以下操作:

$(function () {
    var today = new Date(); //today's date
    var minDate;

    if(today.getDay() < 4){
         minDate = new Date(today.setDate(today.getDate() + 2));
    }else{
         minDate = new Date(today.setDate(today.getDate() + 4));
    }

    $("#datepicker2").datepicker({
        minDate: minDate,
        dateFormat: "mm-dd-yy",
        beforeShowDay: $.datepicker.noWeekends
    });
});

演示:http: //jsfiddle.net/dirtyd77/h2VdQ/4/

于 2013-05-30T18:05:59.427 回答