2016-12-24 38 views
3

我保留會話變量以將日期存儲在我的網站中。如:當日期選擇器的值發生變化時調用函數

<php $_SESSION['checkin']; 
    $_SESSION['checkout']; ?> 

但是當有人更改日期選擇器的日期時,會話變量值應根據選定的值進行修改。我正在嘗試使用ajax調用來設置變量。這是上述任務的HTML代碼和JavaScript函數。

HTML代碼

<div id="reportrange" class="selectbox " style="border: 1px solid #ddd; border-radius: 4px; padding:5px; background: #fff; cursor: pointer; margin: 0 0 4px 0;overflow: hidden; white-space: nowrap;"> 
       <i class="glyphicon glyphicon-calendar fa fa-calendar"></i>&nbsp; 
       <input type="hidden" onchange="changeSession()" name="selectdaterange" id="selectdaterange" value="<?php echo $_SESSION['checkin'] ?> - <?php echo $_SESSION['checkout']?>" disabled/> 
</div> 

JavaScript代碼

<script type="text/javascript"> 

$(function() { 
    alert("dhgfhgfhf"); 
    // var start = moment().add(1, 'days'); 
    // var end = moment().add(2, 'days'); 
    var start = moment('<?php echo $_SESSION[' 
     checkin '] ?>', 'MM/DD/YYYY'); 
    var end = moment('<?php echo $_SESSION[' 
     checkout '] ?>', 'MM/DD/YYYY'); 
    var min_date = moment().add(1, 'days'); 

    function cb(start, end) { 
     $('#selectdaterange').val(start.format('MM/DD/YYYY') + ' - ' + end.format('MM/DD/YYYY')); 
     $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); 
     // changeSession(); // alert (start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); 
    } 

    $('#reportrange').daterangepicker({ 
     "autoApply": true, 
     "startDate": start, 
     "endDate": end, 
     "minDate": min_date, 
     "opens": "center" 
    }, cb); 
    cb(start, end); 
}); 

function changeSession() { 
    alert("gfgf"); 
    var start = document.getElementsByName('daterangepicker_start').value; 
    var end = document.getElementsByName('daterangepicker_end').value; 
    $.ajax({ 

     type: 'POST', 
     data: 'checkin=' + start + '&checkout=' + end, 
     url: "<?php echo base_url(); ?>index.php/DateController/setHotelPageDate", 
     dataType: 'json', 
     cache: false, 
     success: function(response) { 
      alert("response.message"); 
     } 
    }); 
} 

</script> 

但不幸的是,我想呼籲改變事件中使用 這sessionChange()函數。但它不起作用。如果 有人可以幫助我,這將是非常感謝。

+0

確保您使用會話在所有頁面內啓動會話。查看您的控制檯並查看錯誤報告中的錯誤 –

+0

我在每個頁面的開始處開始會話。但是,當日期選擇器值更改時,無法調用函數。 – Shelly

+0

嘗試使用jQuery .on()來捕獲事件。並把它放在jQuery ready塊中。你在混合原生的JS和jQuery,不是一個好主意。 – cen

回答

2

如果您使用jQuery,我建議您一路使用它。使用.change()來捕捉更改事件。從輸入元素中刪除onchange=

$(document).ready(function() { 

$("#selectdaterange").change(function changeSession() { 
    alert("gfgf"); 
    var start = document.getElementsByName('daterangepicker_start').value; 
    var end = document.getElementsByName('daterangepicker_end').value; 
    $.ajax({ 

     type: 'POST', 
     data: 'checkin=' + start + '&checkout=' + end, 
     url: "<?php echo base_url(); ?>index.php/DateController/setHotelPageDate", 
     dataType: 'json', 
     cache: false, 
     success: function(response) { 
      alert("response.message"); 
     } 
    }); 
}); 

}); 

另請注意,更改事件只會在模糊發生後觸發。

相關問題