1

Jscript 代码第 1 部分

第2部分

当我尝试计算两个日期选择器值之间的差异时,单击功能不起作用。但是当我尝试做一些简单的事情时: document.getElementById("price").innerHTML = "safas"; 它可以工作..我想不通,而且我使用的代码也可以在空白页面中使用。

$(document).ready(function(){
  var $datepicker1 =  $( "#datepicker1" );
  var $datepicker2 =  $( "#datepicker2" );
  $datepicker1.datepicker();
  $datepicker2.datepicker({
     onClose: function() {
        var fromDate = $datepicker1.datepicker('getDate');
        var toDate = $datepicker2.datepicker('getDate');
        // date difference in millisec
        var diff = new Date(toDate - fromDate);
        // date difference in days
        var days = diff/1000/60/60/24;

        document.getElementById("Label1").innerHTML = days;
    }
 });
});

所以我尝试了建议的解决方案并对其进行了一些研究,最终我无法处理它。

4

1 回答 1

0

我建议编写一个小函数来帮助解决这个问题:

function dateDifference(start, end) {
  var d1 = new Date(start);
  var d2 = new Date(end);
  return Math.round(Math.abs((d2 - d1) / 86400000));
}

这个函数,给定两个字符串格式的日期,比如mm/dd/yy或 01/21/2017,它将返回两个日期之间的天数。

这是一个更接近您的代码的示例:https ://jsfiddle.net/Twisty/g0ujgbdo/

HTML

<label for="datepicker1">From</label>
<input type="text" id="datepicker1" name="from">
<label for="datepicker2">to</label>
<input type="text" id="datepicker2" name="to">
<p id="results"></p>

JavaScript

$(function() {
  var dF = "mm/dd/yy",
    from = $("#datepicker1")
    .datepicker()
    .on("change", function() {
      to.datepicker("option", "minDate", gD($(this)));
      if (from.datepicker("getDate") !== null && to.datepicker("getDate") !== null) {
        $("#results").html("You selected " + dateDifference(from.datepicker("getDate"), to.datepicker("getDate")) + " days.");
      }
    }),
    to = $("#datepicker2").datepicker()
    .on("change", function() {
      from.datepicker("option", "maxDate", gD($(this)));
      if (from.datepicker("getDate") !== null && to.datepicker("getDate") !== null) {
        $("#results").html("You selected " + dateDifference(from.datepicker("getDate"), to.datepicker("getDate")) + " days.");
      }
    });

  function gD($el) {
    return $.datepicker.parseDate(dF, $el.val()) || null;
  }

  function dateDifference(start, end) {
    var d1 = new Date(start);
    var d2 = new Date(end);
    return Math.round(Math.abs((d2 - d1) / 86400000));
  }
});
于 2017-01-17T20:00:58.653 回答