0

我见过类似的问题,但我不够熟练,无法调整其他代码以适应我的代码。有人可以通过显示此确切代码的解决方案来帮助我吗?我真的很感激任何帮助。

我有一个 datepicker 脚本,我想要的行为是: date1 字段:选择从今天日期的 +1d 到最多 3 个月之间的任何头脑。根据已选择的mindate,允许用户从date2 字段中的mindate 中选择7 天内的任何一天(基本上他们最多可以租用一个项目7 天)。

date2 请注意,如果他们首先选择 date2,则允许 date1 选择 max -7days,但不允许该日期小于今天日期的 +1d。

我查看了很多回复,但找不到这个确切的例子,提前抱歉。

            $(function(){
                var dates = $( "#date1, #date2" ).datepicker({
                    defaultDate: "+1d",
                    minDate: 1,
                    maxDate: "+3M",
                    dateFormat: 'dd M yy',
                    showOtherMonths: true,
                    changeMonth: true,
                    selectOtherMonths: true,
                    required: true,
                    showOn: "focus",
                    numberOfMonths: 1,
                    onSelect: function( selectedDate ) {
                        var option = this.id == "date1" ? "minDate" : "maxDate",
                        instance = $( this ).data( "datepicker" );
                        date = $.datepicker.parseDate(
                        instance.settings.dateFormat ||
                        $.datepicker._defaults.dateFormat,
                        selectedDate, instance.settings );
                        dates.not( this ).datepicker( "option", option, date );
                    }
                });
            });
4

1 回答 1

1

在 vartoday今天的日期以格式存储August 14 2013

带有 id 的输入from被分配日期选择器,日期说明从明天到接下来的 3 个月

带 id 的输入to被禁用,直到用户在带 id 的输入中选择日期from

当日期在带有 id 的输入中更改时,计算当前日期与在带有 id 的输入中选择的日期之间的差异,并将变量传递给带有 id 的输入中的选项,类似地,varfrom根据您的要求计算为 var days在一周时间内选择日期,传入选项并启用。date_difffromdate_diffminDatetomaxDate_ddate_diff +7maxDate

演示

HTML

<input type="text" id="from" />
<input type="text" id="to" />

js

$(document).ready(function () {
    var d = new Date();
    var monthNames = ["January", "February", "March", "April", "May", "June",
        "July", "August", "September", "October", "November", "December"];
    today = monthNames[d.getMonth()] + ' ' + d.getDate() + ' ' + d.getFullYear();

    $('#to').attr('disabled', 'disabled');
    $('#from').datepicker({
        defaultDate: "+1d",
        minDate: 1,
        maxDate: "+3M",
        dateFormat: 'dd M yy',
        showOtherMonths: true,
        changeMonth: true,
        selectOtherMonths: true,
        required: true,
        showOn: "focus",
        numberOfMonths: 1,
    });

    $('#from').change(function () {
        var from = $('#from').datepicker('getDate');
        var date_diff = Math.ceil((from.getTime() - Date.parse(today)) / 86400000);
        var maxDate_d = date_diff+7+'d';
        date_diff = date_diff + 'd';
        $('#to').val('').removeAttr('disabled').removeClass('hasDatepicker').datepicker({
            dateFormat: 'dd.mm.yy',
            minDate: date_diff,
            maxDate: maxDate_d
        });
    });

    $('#to').keyup(function () {
        $(this).val('');
        alert('Please select date from Calendar');
    });
    $('#from').keyup(function () {
        $('#from,#to').val('');
        $('#to').attr('disabled', 'disabled');
        alert('Please select date from Calendar');
    });

});
于 2013-08-14T05:26:06.373 回答