0

我有以下代码:

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Sum Of Total Days</title>
<link rel="stylesheet" href="jquery-ui.css" />
<script src="jquery-1.9.1.js"></script>
<script src="jquery-ui.js"></script>

<script>
$(function sum() {
datepickerln1 = $( "#datepickerln1" ).datepicker().value;
datepickerln2 = $( "#datepickerln2" ).datepicker().value;

document.getElementById('#total').value = parseFloat(datepickerln2) - parseFloat(datepickerln1) +1;
});
</script>
</head>

<body>
<p>Date 1: <input name="datepickerln1" id="datepickerln1" type="text" onblur="sum()"/></p>
<p>Date 2: <input name="datepickerln2" id="datepickerln2" type="text" onblur="sum()"/></p>
<input name="total" id ="total" type="text" readonly />

</body>
</html>

当我在日期 1 和日期 2 中使用 datepicker 放置日期时,它并没有计算总天数。

请帮忙

谢谢

4

2 回答 2

2

首先让我指出您的代码中的错误,然后是 JSFiddle。

(A) 以下是您在代码中犯的几个错误:

1)首先将日期选择器初始化为您的元素。

$( "#datepickerln1" ).datepicker();
$( "#datepickerln2" ).datepicker();

2)你不能得到这样的价值$( "#datepickerln1" ).datepicker().value;

初始化后应该是这样的

$( "#datepickerln1" ).val();
$( "#datepickerln2" ).val();

3) document.getElementById('#total').value,这里不需要#

只是喜欢

document.getElementById('total').value = 'your value';

或者

$('#total').val('your value');

4)你不能像这样轻易地得到dateDifference

parseFloat(datepickerln2) - parseFloat(datepickerln1) + 1 //WRONG

正确的方法是

Math.floor((datepickerln2.getTime() - datepickerln1.getTime()) / 86400000) //RIGHT WAY

(B) 你需要检查这个线程关于datepicker 中的 dateDifference

在这个线程的帮助下,我更新了你的代码

$(document).ready(function () {
    var selector = function (dateStr) {
        var d1 = $('#datepickerln1').datepicker('getDate');
        var d2 = $('#datepickerln2').datepicker('getDate');
        var diff = 0;
        if (d1 && d2) {
            diff = Math.floor((d2.getTime() - d1.getTime()) / 86400000); // ms per day
        }
        $('#total').val(diff);
    }
    $("#datepickerln1").datepicker();
    $('#datepickerln2').datepicker();
    $('#datepickerln1,#datepickerln2').change(selector)
});

检查这个JSFiddle

于 2013-08-27T07:22:37.027 回答
0

您是否提醒了这些值并检查您是否获得了这些值?日期选择器尚未分配给 jquery datepicker。首先这样做:

$(function() {
  $( "#datepickerln1" ).datepicker();
  $( "#datepickerln2" ).datepicker();
});

并使用document.getElementById('total').value而不是document.getElementById('#total').value

于 2013-08-27T07:22:25.870 回答