【问题标题】:Jquery UI Datepicker - show the number of days when choosing a periodJquery UI Datepicker - 选择时间段时显示天数
【发布时间】:2023-03-10 18:16:01
【问题描述】:

要选择日期范围,我使用 Jquery UI Datepicker 插件。我使用的代码应该在选择期间时显示天数。

为了连接插件,我使用CDN:

<link rel="stylesheet" type="text/css" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css"></link>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

HTML 代码:

<form>
    <label>From</label>
    <input id="from" readonly="readonly" name="from" type="text" value="">
    <label>To</label>
    <input id="to" readonly="readonly" name="to" type="text" value="">
    <label>You choosed</label>
    <input id="days" readonly="readonly" name="days" type="text" value=""> days.
</form>

插件初始化:

var from = new Date();
var to = new Date();
var dayDiff = 1;

$(function() {
    var dates = $("#from, #to").datepicker({
            defaultDate: "+1w",
            changeMonth: true,
            numberOfMonths: 1,
            onSelect: function(selectedDate) {
                    var option = this.id == "from" ? "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);

                    if (this.id == "from") {
                            from = $(this).datepicker('getDate');
                            if (!(to == "")) {
                                    update_days()
                            }
                    }
                    if (this.id == "to") {
                            to = $(this).datepicker('getDate');
                            update_days()
                    }
            }
    });
});

function update_days() {
    dayDiff = Math.ceil((to - from) / (1000 * 60 * 60 * 24));
    $("#days").empty()
    $("#days").append(dayDiff)
}

很遗憾,由于某种原因,此代码在选择期间时不显示天数。例如,必须显示“您已选择 - 5 天”。

如何修复代码以使一切正常?需要你的帮助!谢谢!

【问题讨论】:

    标签: javascript jquery datepicker jquery-ui-datepicker


    【解决方案1】:

    #days 是一个 input 元素,它没有附加任何 HTML 内容,不会对值进行任何更改。要使其正常工作,请使用val() 方法。

    function update_days() {
        dayDiff = Math.ceil((to - from) / (1000 * 60 * 60 * 24));
        $("#days").val(dayDiff)
    }
    

    var from = new Date();
    var to = new Date();
    var dayDiff = 1;
    
    $(function() {
      var dates = $("#from, #to").datepicker({
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 1,
        onSelect: function(selectedDate) {
          var option = this.id == "from" ? "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);
    
          if (this.id == "from") {
            from = $(this).datepicker('getDate');
            if (!(to == "")) {
              update_days()
            }
          }
          if (this.id == "to") {
            to = $(this).datepicker('getDate');
            update_days()
          }
        }
      });
    });
    
    function update_days() {
      dayDiff = Math.ceil((to - from) / (1000 * 60 * 60 * 24));
    
      $("#days").val(dayDiff)
    }
    <link rel="stylesheet" type="text/css" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css"></link>
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    
    <form>
      <label>From</label>
      <input id="from" readonly="readonly" name="from" type="text" value="">
      <label>To</label>
      <input id="to" readonly="readonly" name="to" type="text" value="">
      <label>You choosed</label>
      <input id="days" readonly="readonly" name="days" type="text" value=""> days.
    </form>

    【讨论】:

      猜你喜欢
      • 2010-10-18
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多