2012-08-01 73 views
0

編輯:我只是做了的jsfiddle證明這裏的問題:http://jsfiddle.net/GvjRd/3/JQuery的UI日期選擇器停止奇蹟般地拉正確的月份

我有一個使用JQuery的UI日期選擇器的web工具。它幾周來一直工作順利,但突然之後,它突然停止了今天的工作。無論我在日曆上選擇哪天/每月/每年,當我選擇一天並致電alert(currentTime.getMonth());時,它將返回「7」。它返回日/年就好了。

我開始測試自身就在日期選擇器,使得一個很簡單的頁面:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
    <link type="text/css" href="ui-lightness/jquery-ui-1.8.21.custom.css" rel="stylesheet" /> 
    <link rel="stylesheet" href="demos.css"> 
    <script type="text/javascript" src="jquery-1.7.2.min.js"></script> 
    <script type="text/javascript" src="jquery-ui-1.8.21.custom.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $("#datepicker").datepicker({ 
       onSelect : function(dateText, inst) { 
        var currentTime = new Date(); 
        currentTime.setDate($("#datepicker").datepicker("getDate").getDate()); 
        alert(currentTime.getMonth()); 
       } 
      }); 
     }); 
    </script> 

</head> 
<body> 
      Date: 
      <input type="text" id="datepicker"> 
</body> 

即使這個網頁上,不管我選擇什麼樣的日/月/年組合,警告說:「7 」。任何人都有這個問題?

+0

難道我的答案不工作? jsFiddle:http://jsfiddle.net/GvjRd/8/ – 2012-08-01 21:08:19

回答

0

JavaScript中的月份基於零,因此7 =第8個月或8月。

在您的示例中,您將currentTime設置爲今天,然後僅將該日期對象的日期更改爲日曆上選擇的日期,而使月份和年份保持不變。因此,currentTime.getMonth()將始終顯示運行腳本的月份,而不是從日曆中選取的日期。要做到這一點,使用currentTime.setMonth($("#datepicker").datepicker("getDate").getMonth());

jsFiddle example

+0

我知道這一點。出於某種原因,無論用戶選擇日期選擇器的日期是什麼日期,都表示選擇的日期是八月。 – user1507461 2012-08-01 20:28:47

+0

你沒有使用用戶選擇的日期,那就是'dateText'。你正在使用'var currentTime = new Date();'。至少在你發佈的小提琴中。 – j08691 2012-08-01 20:29:43

+0

你說得對 - 我必須替換'currentTime.setDate($(「#datepicker」)。datepicker(「getDate」)。getDate());' 與 'currentTime = $(this).datepicker('getDate');' – user1507461 2012-08-01 21:03:40

0

只要確保你沒有設置currentTime可變時間提前:

$(function() { 
       $("#datepicker").datepicker({ 
        onSelect : function(dateText, inst) { 
         var currentTime; 
         currentTime = $("#datepicker").datepicker("getDate"); 
         alert(currentTime.getMonth() + 1); 
        } 
       }); 
      });​ 
相關問題