如何使用JQuery datepicker将默认日设置为即将到来的星期六和星期日?

时间:2013-02-27 23:17:00

标签: jquery datepicker

我是JQuery的新手,我未能找到解决问题的正确方法。

以下是我写的代码:

$(function() {
         $("#from").datepicker({
                    //dateFormat: 'yy-mm-dd',
                        minDate: 0,
                    defaultDate: "+1w",
                    changeMonth: true,
                    numberOfMonths: 1,
                        dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], 
                    onSelect: function(selectedDate) {
                        $("#to").datepicker("option", "minDate", selectedDate);
                    }
                });

                $("#to").datepicker({
                    //dateFormat: 'yy-mm-dd',
                        minDate: 0,
                    defaultDate: "+1w",
                    changeMonth: true,
                    numberOfMonths: 1,
                        dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
                    onSelect: function(selectedDate) {
                        $("#from").datepicker("option", "maxDate", selectedDate);
                    }
                });
});

我想将“#from”文本框设置为最接近的星期六(日期),如果今天是星期六之前,将“#to”文本框设置为星期日(日期),否则,将星期日(日期)放在两个文本框中作为默认日。

离。今天是2013年2月27日(周三),我想把03/02/2013放在“#from”和03/03/2013“#to”,如果今天是03/02/2013,我想把03/03/2013在两个文本框上。

我想过创建一个变量currDay并将今天的日期存储到它。由于datepicker的日期从0-6开始,然后我将计算当前日和即将到来的星期六/星期日之间的差异,然后将默认日期设置为currDay + diff

我该怎么做呢?

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

如果您获得当周的当天,您可以从一周中的位置减去该数字,以获得所需的结果:

$(function () {
    var d = new Date();
    var n = d.getDay();

    var from=6-n;
    var to=7-n;

    if(n==0)
        from=0;

    $("#from").datepicker({
        //dateFormat: 'yy-mm-dd',
        minDate: 0,
        defaultDate: "+"+from+"d",
        changeMonth: true,
        numberOfMonths: 1,
        dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
        onSelect: function (selectedDate) {
            $("#to").datepicker("option", "minDate", selectedDate);
        }
    });

    $("#to").datepicker({
        //dateFormat: 'yy-mm-dd',
        minDate: 0,
        defaultDate:  "+"+to+"d",
        changeMonth: true,
        numberOfMonths: 1,
        dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
        onSelect: function (selectedDate) {
            $("#from").datepicker("option", "maxDate", selectedDate);
        }
    });
});

http://jsfiddle.net/6WHyK/

答案 1 :(得分:0)

我可能没有很好地澄清我的问题...感谢r0m4n尝试。我设法自己解决这个问题。如果您在js部分粘贴以下代码,您将看到我正在尝试做的事情......

function toDay() {
    var date = new Date();
    var currDay = date.getDay();
    var diff = 7 - currDay;
    return (diff);
}


$(function () {
    var saturday = new Date();
    var sunday = new Date();
    sunday.setDate(sunday.getDate() + toDay());
    if (toDay != 0) {
        saturday.setDate(saturday.getDate() - 1 + toDay());
    } else {
        saturday = sunday;
    }
    var comingSaturday = (saturday.getMonth() + 1) + '/' + saturday.getDate() + '/' + saturday.getFullYear();

    var comingSunday = (sunday.getMonth() + 1) + '/' + sunday.getDate() + '/' + sunday.getFullYear();
    $("#from").val(comingSaturday);
    $("#to").val(comingSunday);
})

当然,我是新人......我可能犯了一些错误,请随意为我挑选错误。再次感谢。