2012-07-31 60 views
2

我們有一個我們正在接受月份和年份的日期字段。但是,每當用戶選擇該字段時,jQuery UI Datepicker默認爲當前的月份和年份,並清除他們輸入的內容。jQuery UI Datepicker在mm/yy上的默認值不正確

我已經將測試用例中的格式切換爲mm/dd/yy,並且Datepicker的行爲正確,所以我相當確信基本代碼是正確的。

有關如何解決這個問題的任何建議?

如下代碼示例:

<html> 
<head></head> 
<body> 
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script> 
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.22/jquery-ui.min.js"></script> 
    <input type="text" id="asdf" value="07/2006" /> 
    <script type="text/javascript"> 
     $('#asdf').datepicker({ 
      changeMonth: true, 
      changeYear: true, 
      dateFormat: 'mm/yy', 
      showButtonPanel: true 
     }); 
    </script> 
</body> 
</html> 

編輯:爲了更清楚一點,在以下情況下,如果我們提供的輸入的值了一天比較日期選擇的日期,以及更改dateFormat選項:

<html> 
<head></head> 
<body> 
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script> 
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.22/jquery-ui.min.js"></script> 
    <input type="text" id="asdf" value="07/01/2006" /> 
    <script type="text/javascript"> 
     $('#asdf').datepicker({ 
      changeMonth: true, 
      changeYear: true, 
      dateFormat: 'mm/dd/yy', 
      showButtonPanel: true 
     }); 
    </script> 
</body> 
</html> 

回答

2

我以爲我第一次理解你的問題,但其他人讓我感到困惑。問題似乎在於datepicker沒有將mm/yy格式視爲真正的日期時間格式,所以當試圖查看當前日期時會感到困惑,這意味着您必須做一些有趣的解決方法。我並不是說這是最好的方式,但這是我制定的。

請注意,這裏使用Date.js

$('#asdf').datepicker({ changeMonth: true, changeYear: true, dateFormat: 'mm/yy',beforeShow: function(input, inst) 
{ //getter 
    var defaultDate = $("#asdf").datepicker("option", "defaultDate"); 
    //setter 
    $("#asdf").datepicker("option", "defaultDate", Date.parseExact($("#asdf").val(), "M/yyyy")); 
} }); 
+0

我假設Date.js你的意思是http://www.datejs.com/? – 2012-08-01 17:31:05

+0

經過對我們特定用法的小調整後,此功能完美無缺。謝謝! – 2012-08-01 19:43:50

0

看起來它不會將月份或年份更改視爲「選擇」操作,但會在單擊某一天時更改月份/年份。換句話說,如果您更改月份和年份,但不點擊某一天,則認爲您取消了該操作。

您可以嘗試爲onChangeMonthYear事件(docs)編寫一些代碼以閱讀選定的月份/年份並自行關閉日曆對話框。

+0

對不起,它可能沒有明確。所以當你加載上面的內容時,你會在頁面的唯一字段中看到07/2006。當鼠標進入該字段時,日期選擇器將出現,默認爲當前的月份/年份。將該值與'dateFormat'選項包含一天的情況進行比較。 (我會更新與這種情況下的問題。) – 2012-07-31 20:01:02