jquery datepicker + date diff calculation

前端 未结 1 1241
死守一世寂寞
死守一世寂寞 2021-01-14 02:40

this is my code:

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


        
1条回答
  •  囚心锁ツ
    2021-01-14 03:41

    You don't want to use .val() here, that will give you a string and subtracting strings from each other isn't terribly useful. The datepicker has a method, getDate, that gives you a Date object so you could use that:

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

    Demo: http://jsfiddle.net/ambiguous/TCXcX/

    Also, this code:

    $(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);  
    });
    

    will run when the DOM is ready but you don't want it to run until the dates have been selected. You'd need to bind your (corrected) calculation code to a button or watch the onSelect events:

    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 });
    

    And another demo: http://jsfiddle.net/ambiguous/5BbGS/

    0 讨论(0)
提交回复
热议问题