jquery datepicker + вычисление различий даты - PullRequest
4 голосов
/ 10 декабря 2011

это мой код:

$(function() {
    $( "#arr_date" ).datepicker({ dateFormat: 'dd-mm-yy' });
    $( "#dep_date" ).datepicker({ dateFormat: 'dd-mm-yy' });
});

$(function() {
    var start = $('#arr_date').val();
    var end = $('#dep_date').val();
    var diff = new Date(end - start);
    var days = diff/1000/60/60/24;
    $('#num_nights').val(days);  
});

Я нашел это решение по разнице дат здесь на stackoverflow, но оно не работает для меня.

Он вообще не рассчитывает разницу в датах.Я думал, что это может быть из-за форматирования даты (дд-мм-гг).Я пробовал это с форматированием yyyy-mm-dd, но он тоже не работал.

Может ли кто-нибудь помочь мне и сказать, что может вызвать проблему?Спасибо.

1 Ответ

19 голосов
/ 10 декабря 2011

Вы не хотите использовать .val() здесь, это даст вам строку, и вычитание строк друг из друга не очень полезно.DatePicker имеет метод, getDate, который дает вам объект Date, чтобы вы могли использовать его:

var start = $('#arr_date').datepicker('getDate');
var end   = $('#dep_date').datepicker('getDate');
var days   = (end - start)/1000/60/60/24;

Демо: http://jsfiddle.net/ambiguous/TCXcX/

Также,этот код:

$(function() {
    var start = $('#arr_date').val();
    var end = $('#dep_date').val();
    var diff = new Date(end - start);
    var days = diff/1000/60/60/24;
    $('#num_nights').val(days);  
});

будет запущен, когда DOM будет готов, но вы не хотите, чтобы он работал до тех пор, пока не будут выбраны даты.Вам нужно привязать свой (исправленный) код расчета к кнопке или просмотреть события onSelect:

function showDays() {
    var start = $('#arr_date').datepicker('getDate');
    var end   = $('#dep_date').datepicker('getDate');
    if(!start || !end)
        return;
    var days = (end - start)/1000/60/60/24;
    $('#num_nights').val(days);  
}

$( "#arr_date" ).datepicker({ dateFormat: 'dd-mm-yy', onSelect: showDays });
$( "#dep_date" ).datepicker({ dateFormat: 'dd-mm-yy', onSelect: showDays });

И еще одну демонстрацию: http://jsfiddle.net/ambiguous/5BbGS/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...