2009-12-23 149 views
33

我有一個函數,執行一個查詢來獲取一些數據基於使用.datepicker()選擇的某個日期範圍。我試圖將響應數據中的日期選擇器設置回查詢執行前選定的日期範圍。.datepicker('setdate')問題,在jQuery

queryDate = '2009-11-01'; 
$('#datePicker').datepicker('setDate', queryDate); 

將datepicker設置爲今天的日期有一個有趣的結果!如果它只是吐出一個錯誤,我不會感到困惑。它爲什麼將它設置爲今天的日期?

我怎樣才能取得像'yyyy-mm-dd'這樣的日期並設置日期選擇器?

我想這可能是最好的設置日期選擇器鏈接到'queryDate'的文本框。

回答

31

你應該解析日期字符串,因爲使用與Date構造的ISO8601日期格式不支持跨browserly的是,(一些瀏覽器支持因爲這將是5的EcmaScript標準的一部分):

var queryDate = '2009-11-01', 
    dateParts = queryDate.match(/(\d+)/g) 
    realDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2]); 
            // months are 0-based! 

$('#datePicker').datepicker({ dateFormat: 'yy-mm-dd' }); // format to show 
$('#datePicker').datepicker('setDate', realDate); 

檢查上面的例子here

+4

你錯過了一點:'$('#datePicker')。datepicker('setDate',realDate);' – 2009-12-23 16:45:37

+1

Thanks !, fixed ... – CMS 2009-12-23 16:47:27

+3

不要用你自己解析日期。這是不好的方法。更好地使用datepicker parseDate函數。看看我的答案。 – jurka 2011-05-19 05:41:35

6

嘗試將其更改爲:

queryDate = '2009-11-01'; 
$('#datePicker').datepicker({defaultDate: new Date (queryDate)}); 
10

由於Scobal的帖子所暗示的,日期選擇是尋找一個Date對象 - 不只是一個字符串!因此,修改您的示例代碼做你想要什麼:

var queryDate = new Date('2009/11/01'); // Dashes won't work 
$('#datePicker').datepicker('setDate', queryDate); 
+0

工作就像一個魅力。並且寧願使用內置的Date對象,而不是根據CMS的解決方案 – 2011-06-09 00:00:31

+3

而使用一些DIY解析器。但是,當前文檔狀態:新日期可能是Date對象或當前日期格式的字符串。使用.datepicker({dateFormat:'yy-mm-dd'})創建日期選擇器時設置格式;但這不起作用 - 這是一個錯誤,與文檔或其他東西的錯誤? – 2011-07-07 21:23:07

1

如果設置了minDate或maxDate選項,請檢查您嘗試設置的日期是否在允許的日期範圍內。

69

當您嘗試調用setDate時,您必須提供有效的javascript Date對象。

queryDate = '2009-11-01'; 

var parsedDate = $.datepicker.parseDate('yy-mm-dd', queryDate); 

$('#datePicker').datepicker('setDate', parsedDate); 

這將允許您使用不同格式的查詢日期字符串日期表示的日期選擇器。這種方法在創建多語言網站時非常有用。另一個有用的函數是formatDate,它將javascript日期對象格式化爲字符串。

$.datepicker.formatDate(format, date, settings); 
+12

+1比接受的答案好得多。太糟糕了,因此沒有辦法表明在被接受的答案之後出現了更好的答案(在這種情況下幾年後)。 – Hollister 2011-06-28 20:19:12

+0

@Hollister,你可以給主持人標記一個問題,當然可以解釋後面的答案更好。我認爲主持人可以改變接受答案。 – 2014-09-16 15:57:07

2
function calenderEdit(dob) { 
    var date= $('#'+dob).val(); 
    $("#dob").datepicker({ 
     changeMonth: true, 
     changeYear: true, yearRange: '1950:+10' 
    }).datepicker("setDate", date); 
} 
+0

究竟是在尋找什麼,ty先生 – 2018-03-07 14:20:56