根据一个日期选择器的选定日期设置多个日期选择器的值

时间:2013-12-05 10:18:01

标签: javascript jquery jquery-ui date jquery-ui-datepicker

我遵循jQuery UI Datepicker示例代码

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>jQuery UI Datepicker - Default functionality</title>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    <link rel="stylesheet" href="/resources/demos/style.css">
    <script>
        $(function () {
            $("#datepicker1").datepicker();
            $("#datepicker1").change(function () {
                alert($(this).val());
                var date = $(this).datepicker();
                $("#datepicker2").val("option", "dd-mm-yy", $(this).val());
                //alert($( "#datepicker2" ).val());
            });
        });
    </script>
</head>
<body>
    <p>Date1: <input type="text" id="datepicker1"></p>
    <p>Date2: <input type="text" id="datepicker2"></p>
    <p>Date3: <input type="text" id="datepicker3"></p>
    <p>Date4: <input type="text" id="datepicker4"></p>
</body>
</html>

我想根据datepicker1中选择的值设置日期选择器2,3和4的值。

如果#datepicker1有valud 12/05/2013,那么我想为每个其他jQuery datepickers显示+1日期,如下所示

datepicker1 => 12/05/2013 then
datepicker2 => 12/06/2013
datepicker3 => 12/07/2013
datepicker4 => 12/08/2013

我在上面尝试过。

你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可以使用onSelect事件并调用setDate方法:

$("#datepicker1, #datepicker2, #datepicker3, #datepicker4").datepicker();
$("#datepicker1").datepicker("option", "onSelect", function (dateText, inst) {
    var date1 = $.datepicker.parseDate(inst.settings.dateFormat || $.datepicker._defaults.dateFormat, dateText, inst.settings);

    var date2 = new Date(date1.getTime());
    date2.setDate(date2.getDate() + 1);
    $("#datepicker2").datepicker("setDate", date2);

    var date3 = new Date(date1.getTime());
    date3.setDate(date3.getDate() + 2);
    $("#datepicker3").datepicker("setDate", date3);

    var date4 = new Date(date1.getTime());
    date4.setDate(date4.getDate() + 3);
    $("#datepicker4").datepicker("setDate", date4);
});

Demo here


onSelect将日期作为字符串传递,因此为方便起见,我们使用以下jQuery UI datepicker实用程序函数将其转换为JavaScript Date object

$.datepicker.parseDate( format, value[, settings] )

表达式:

inst.settings.dateFormat || $.datepicker._defaults.dateFormat

表示使用datepicker上指定的dateFormat值(如果有);否则使用datepicker默认值dateFormat"mm/dd/yy")。