【问题标题】:Setting max date value to current date OR 1 year from start date将最大日期值设置为当前日期或从开始日期起 1 年
【发布时间】:2016-03-05 10:09:29
【问题描述】:

我应该怎么做才能限制用户选择从开始日期或当前日期超过一年的结束日期。我有这样的代码。

$(function () {
$('#DateFrom').datepicker({
    dateFormat:'d-M-y',
    changeMonth: true,
    changeYear: true,
    minDate: new Date(2000, 7, 23), 
    maxDate: 0,
    onSelect: function() {
        var date = $('#DateFrom').datepicker('getDate');
        date.setTime(date.getTime() + (1000*60*60*24*365));
        $('#DateTo').datepicker('option', 'maxDate', date);
        $('#DateTo').datepicker('option', 'minDate',$('#DateFrom').datepicker('getDate'));
        displayToUser();
    },

});

$('#DateTo').datepicker({
    dateFormat:'d-M-y',
    maxDate: 0,
    changeMonth: true,
    changeYear: true,
    onSelect: displayToUser,
});
});
function displayToUser() {}

这里虽然限制用户在从开始日期起一年内,但它允许用户选择当前日期之后的日期。

例如:如果开始日期是 23-01-2016,它允许选择结束日期直到 22-01-2017。我希望它最多是今天的日期。

【问题讨论】:

  • 让我知道我的解决方案是否有效 :)
  • 成功了。但我现在又面临一个问题。您能帮我清除选择单选按钮时的日期选择器值吗?我有两个单选按钮,并且都在选择时显示日历。我需要在选择另一个单选按钮时清除一个日历值。
  • 问题已解决。 onclick="$('selector').datepicker('setDate', null) 成功了。如果有更好的解决方案,请告诉我。
  • 我认为你的解决方案是最好的
  • 添加 365 天将超出闰年边界,例如2015-03-01 加上 365 天是 29-02-2016。只需在年份中添加 1 年:date.setYear(date.getYear() + 1)。将 1 年添加到 2 月 29 日将返回 3 月 1 日。如果您希望它是 2 月 28 日,请检查月份,如果不同,请将日期设置为零(上个月的最后一天)。否则,离开它。

标签: javascript jquery date datepicker


【解决方案1】:

这样可以吗?

$(function () {
    $('#DateFrom').datepicker({
        dateFormat:'d-M-y',
        changeMonth: true,
        changeYear: true,
        minDate: new Date(2000, 7, 23), 
        maxDate: 0,
        onSelect: function() {
            var date = $('#DateFrom').datepicker('getDate');
            date.setTime(date.getTime() + (1000*60*60*24*365));
            var todaysDate = new Date();
            if(date.getTime() > todaysDate.getTime()) date = todaysDate;
            $('#DateTo').datepicker('option', 'maxDate', date);
            $('#DateTo').datepicker('option', 'minDate',$('#DateFrom').datepicker('getDate'));
            displayToUser();
        },

    });

    $('#DateTo').datepicker({
        dateFormat:'d-M-y',
        maxDate: 0,
        changeMonth: true,
        changeYear: true,
        onSelect: displayToUser,
    });
});
function displayToUser() {}

我只添加了这两行

            var todaysDate = new Date();
            if(date.getTime() > todaysDate.getTime()) date = todaysDate;

【讨论】:

  • 非常感谢亚伦。更新的工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2023-03-07
  • 1970-01-01
  • 2012-11-19
  • 1970-01-01
相关资源
最近更新 更多