2010-11-25 37 views
3

我正在構建一個計劃器,它將在幾個不同的地方使用datepicker功能。有一個通用的日期選擇器控制日曆,然後在不同的對話框中,我想要一個按鈕來打開日期選擇器,只是爲了選擇一個字段的日期(例如事件的開始日期)。在一個頁面上使用不同日期選擇器的jQuery問題

一般日期選擇器綁定到一個div(即它是一個內聯datepicker),而其他日期選擇器綁定到輸入。有一個很好的理由,我爲什麼把一個日期選擇器綁定到一個div上:我需要能夠使用拖動和拖放功能將項拖到它上面,這使用'popup'日期選擇器是不可能的。

現在,我在ExpertExchange的post上看到,一旦你有一個datepicker實例被初始化,它的選項將自動應用到任何其他實例,除非你爲後面的實例指定它們。但在我的情況下,似乎一切都糾結:一個項目指定的事件將觸發另一個,內聯日期選擇器將出現在我關閉彈出日期選擇器等。

我還沒有包括真正的代碼,因爲有很多,我首先想知道我是否缺少一般原則,比如「Datepicker不允許一個選項爲不同的實例使用不同的值,因爲...」或「不要混合使用內聯和彈出日期選擇器,因爲...「或某些這樣的事情。

但codespeak我的總體思路是:

$('div#mainDatePicker').datepicker({ 
    //options for main (inline) datepicker, doubling as defaults for any subsequent datepickers 
}) 

$('input#selectStartDate').datepicker({ 
    //specific options for this datepicker, where different from the main one 
}) 

感謝您的幫助!

Wytze

回答

0

我有這個問題一次(日期格式)。也許你可以綁定它像點擊:

$('div#mainDatePicker').click(function(){ 
    $(this).datepicker({ 
     //options for main (inline) datepicker, doubling as defaults for any subsequent datepickers 
    }) 
}) 

$('input#selectStartDate').click(function(){ 
    $(this).datepicker({ 
     //specific options for this datepicker, where different from the main one datepickers 
    }) 
}) 
2

我做了同樣的頁面上有多個datepickers一些工作,直到我意識到每個日期選擇器都需要有一個唯一的ID有意想不到的效果。

例如,假設您想將日期選擇器綁定到兩個類似的輸入按鈕。下面將導致問題:

<input type="text" class="myCustomDatePicker"> 
<input type="text" class="myCustomDatePicker"> 

例如,如果設置使用所述第二的DatePicker選定的日期將出現在第一輸入框中的輸入字段中的日期。

相反,設定一個id將獨立保證每個日期選擇器功能:

<input type="text" class="myCustomDatePicker" id="dp1"> 
<input type="text" class="myCustomDatePicker" id="dp2"> 

不知道這是否幫助,但只是要檢查我同一個頁面上使用多個datepickers時猜測

1

了jQuery UI Datepicker窗口小部件引用您附加到的HTML屬性的ID。因此,要使用多個日期選擇器 ,您需要確保每個日期選擇器的ID不同。

So you want to end up with the following HTML: 

<input id="form-date-1" type="text" /> 
<input id="form-date-2" type="text" /> 
<script type="text/javascript"> 
    $("#form-date-1").datepicker(); 
    $("#form-date-2").datepicker(); 
</script> 

檢查這篇文章:http://mike-abner.posterous.com/multiple-jquery-ui-datepickers-on-the-same-pa

3

如果使用$('.someclass).datepicker();$('.anotherclass).datepicker()它會奏效。

如果你使用:

$('.someclass').each(function() { 
    $(this).datepicker(); 
}); 

這是不行的。

Alex P說會發生什麼。

要解決這個問題,你需要使用ID的。 沒有其他辦法。

無論您使用的是什麼編號。你可以使用隨機生成的唯一ID。下面是一個例子:

$('.someclass').each(function() { 
    $('#' + $(this).attr('id')).datepicker(); 
});