jqueryui datepicker,比较两个日期并调整是否大于或小于

时间:2014-08-09 02:00:56

标签: jquery jquery-ui datepicker

我正在尝试使用两个输入 sdate edate 的dateRange,但如果sdate变得大于edate,我希望将edate设置为sdate是什么选为,反之亦然。

一个例子是:

如果sdate和edate都设置为'2014-08-02',如果我编辑为'2014-08-01',则sdate应移至'2014-08-01'。但是,将edate设置为“2014-08-03”除了更改edate之外什么都不做。

如果sdate大于edate,则应以类似的方式工作。

编辑:更新了jsfiddle并进行了改进。当我用sdate传递它时,我可以让edate改变,但是如果它比sdate少,我就不能让edate改变。 Here's a jsfiddle.

function dateRange() {
     $(function () {
     $("#sdate").datepicker({ dateFormat: "yy-mm-dd",
        defaultDate: "+0d",
        changeMonth: true,
        changeYear: true,
        onClose: function () {
            testDates();
        }
    });
    $("#sdate").datepicker("setDate", "set");
    $("#edate").datepicker({ dateFormat: "yy-mm-dd",
        defaultDate: "+0d",
        changeMonth: true,
        changeYear: true,
        onClose: function () {
            testDates();
        }
    });
    $("#edate").datepicker("setDate", "set");
});
function testDates() {
    var sdate = $("#sdate").datepicker("getDate");
    var edate = $("#edate").datepicker("getDate");
    if (sdate > edate) {
        $("#sdate").datepicker("setDate", sdate);
        $("#edate").datepicker("setDate", sdate);
    }else if (edate < sdate) {
        $("#sdate").datepicker("setDate", edate);
        $("#edate").datepicker("setDate", edate);
     }
}
}

2 个答案:

答案 0 :(得分:3)

我能够通过在函数中构建条件来弄明白。

function dateRange() {
    $(function () {
        $("#sdate,#edate").datepicker({
            dateFormat: "yy-mm-dd",
            defaultDate: "+0d",
            changeMonth: true,
            changeYear: true
        }).change(function () {
            var sdate = $('#sdate').datepicker("getDate");
            var edate = $('#edate').datepicker("getDate");
            if (this.id == 'sdate') {
                if (sdate > edate) {
                    $('#edate').datepicker("setDate", sdate);
                }
            } else {
                if (edate < sdate) {
                    $('#sdate').datepicker("setDate", edate);
                }
            }
        });
        $("#sdate,#edate").datepicker("setDate", "set");
    });
}

jsfiddle:http://jsfiddle.net/tmac25/udtmn6n7/

答案 1 :(得分:1)

尝试这是有效的。如果你还需要什么,请告诉我。

  $(function () {
        $("#sdate,#edate").datepicker({
            dateFormat: "yy-mm-dd",
            defaultDate: "+0d",
            changeMonth: true,
            changeYear: true,

            onClose: function () {
                //testDates();
            }
        }).on('changeDate', function(ev){
            $('#edate,#sdate').val($(this).val());
        });
        $("#sdate,#edate").datepicker("setDate", "set");
    });

请参阅jsfiddle链接http://jsfiddle.net/gaurav22031987/tuG6C/216/