【问题标题】:How to have a dynamic maximum end date in Bootstrap Date Picker如何在 Bootstrap 日期选择器中设置动态最大结束日期
【发布时间】:2016-02-28 14:53:48
【问题描述】:

我在我的网站上使用以下日期选择器来选择开始和结束日期:

https://bootstrap-datepicker.readthedocs.org/en/latest/index.html

规则是:

  • 开始日期可以在今天和 + 30 天之间,不能再多了
  • 结束日期不能超过所选开始日期后 1 年

所以当表单加载时,我将 endDate 选项设置为“+1y -1d”,效果很好。但是,例如,如果客户选择 +30 天的开始日期,我需要将第二个字段上的 endDate 选项再次扩展到“当前开始日期 +1y -1d”。

我已经开始编写代码,但真的不知道如何实现:

<script type="text/javascript">
    $(function() {

        $(".startdate").datepicker({
            format: 'd MM yyyy',
            startDate: '+0d',
            endDate: '+30d',
            autoclose: true,
            startView: 0,
            minViewMode: 0,
            todayHighlight: true,
            orientation: "top"
        });
        $(".enddate").datepicker({
            format: 'd MM yyyy',
            startDate: '+1d',
            endDate: '+1y -1d',
            autoclose: true,
            startView: 0,
            minViewMode: 0,
            todayHighlight: true,
            orientation: "top"
        });

        $("#startdate").change(function() {

            var startdate = new Date (  $("#startdate").val() ) ;
            //alert(startdate);
            var newendatemaximum;

            $(".enddate").datepicker({
                endDate: ???????
            });
        });

    });
</script>

正在进行的解决方案:

$(".startdate").change(function() {
            //alert("start date change");
            var newendatemaximum = new Date (  $(".startdate").val() ) ;
            newendatemaximum.setYear(newendatemaximum.getFullYear() + 1);
            alert(newendatemaximum);
            $(".enddate").datepicker("option", "endDate", newendatemaximum);
        });

【问题讨论】:

    标签: javascript jquery twitter-bootstrap datetime datepicker


    【解决方案1】:

    您不必使用 json 来设置日期选择器选项。您可以直接设置它们。一旦有了要用作 javascript 日期的新最大日期,您就可以直接设置该选项:

        $("#startdate").change(function() {
            var newendatemaximum = new Date (  $("#startdate").val() ) ;
            newendatemaximum.setYear(newendatemaximum.getFullYear() + 1);
            $(".enddate").datepicker("option", "endDate", newendatemaximum);
        });
    

    【讨论】:

    • 请解释您编写的代码。
    • 感谢您的帮助。我已经尝试过您的代码(尽管在 startdate 上将 # 替换为 .),但它不起作用。请参阅我在编辑原始问题时尝试的确切代码。警报正如预期的那样。但是 enddate 字段仍然是页面加载时设置的 11 月 25 日(+1y -1d)。无论我尝试什么开始日期。
    • 我上次发表评论后有什么想法吗?我肯定想解决这个问题?
    • 我现在唯一的想法是不要像现在一样初始化它,而是使用$(".enddate").datepicker("option", "endDate", newendatemaximum); 行来初始化它。也许用你用+y-d“sticks”做的方式初始化它并取代任何其他代码。这是可能的。
    猜你喜欢
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多