javascript - 如何根据另一个日期限制 jQuery-ui 日期选择器的最小和最大日期

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

我想知道如何设置入住日期之间的退房日期。就像我们选择 6 月(当前月份是 2 月)和 15 日一样。因此它赋予在 30 天(30 限制)之间选择日期的权限。所以结束日期是:7 月 15 日。这里我们有一个代码:

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/black-tie/jquery-ui.css" media="screen" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js"></script>
<style type="text/css">
body{ font: 60.0% "Trebuchet MS", sans-serif; margin: 50px; }
</style>
<script type="text/javascript">
    $(function() {
        $('#from').datepicker({
            numberOfMonths: 2,
            firstDay: 1,
            dateFormat: 'DD dd-mm-yy',
            minDate: '0',
            maxDate: '+2Y',
            onSelect: function(dateStr) {
                var min = $(this).datepicker('getDate');
                $('#to').datepicker('option', 'minDate', min || '0');
                datepicked();
            } 
        });
        $('#to').datepicker({
            numberOfMonths: 2,
            firstDay: 1,
            dateFormat: 'DD dd-mm-yy',
            minDate: '0',
            maxDate: '+2Y',
            onSelect: function(dateStr) {
                var max = $(this).datepicker('getDate');
                $('#from').datepicker('option', 'maxDate', max || '+2Y');
                datepicked();
            } 
        });
    });
    var datepicked = function() {
        var from = $('#from');
        var to = $('#to');
        var nights = $('#nights');
        var fromDate = from.datepicker('getDate')
        var toDate = to.datepicker('getDate')
        if (toDate && fromDate) {
            var difference = 0;
            var oneDay = 1000 * 60 * 60 * 24;
            var difference = Math.ceil((toDate.getTime() - fromDate.getTime()) / oneDay);
            nights.val(difference);
        }
    }
</script>
<input type="text" id="from" name="from" size="28" style="width:194px; /*Tag Style*/" value="" >
<input type="text" id="to" name="to" size="28" style="width:194px; /*Tag Style*/" value="" >
<input type="text" id="nights" name="nights" size="4" style="width:50px; /*Tag Style*/" value="" readonly="readonly">

我们的主要动机是制作此代码,用于办理入住、退房和住宿。其中入住日期可以是2012年至2013年的任何月份,退房日期仅为30天后的入住日期,总晚数仅为30晚。

最佳答案

看看this demo 。我在 onSelect 事件中添加了一些行,如下所示:

    onSelect: function(dateStr) {
        var d1 = $(this).datepicker("getDate");
        d1.setDate(d1.getDate() + 0); // change to + 1 if necessary
        var d2 = $(this).datepicker("getDate");
        d2.setDate(d2.getDate() + 30); // change to + 29 if necessary
        $("#to").datepicker("setDate", null);
        $("#to").datepicker("option", "minDate", d1);
        $("#to").datepicker("option", "maxDate", d2);
        datepicked();
    }

根据我对住宿业务的理解,日期应该包含在内——即2012年6月15日+30晚应该是2012年6月14日。但我遵循了您在问题的前几行中提到的示例。

关于javascript - 如何根据另一个日期限制 jQuery-ui 日期选择器的最小和最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9375265/

相关文章:

javascript - 检测点击 div 背景 30% resized

jQuery 对话框在关闭后中断 - 我正在使用对话框销毁

jquery - ASP.NET MVC 4 不支持 jquery datepicker

javascript - 使用 Websocket 的 Web 应用程序虚拟控制台

javascript - 如何计算css三 Angular 形的高度?

javascript - 杀死 "personalized"间隔

jquery - jQuery 1.4 有什么新功能?

javascript - 获取元素属性

javascript - 在 Intranet 中启用跨域脚本

javascript - JQuery动态验证多维数组中的文件大小