2011-08-13 9 views
4

私はこれまでJQuery UI DatePickerを使用してきましたが、かなり満足しています。私は将来、複数の日付をユーザーに表示する方法を探しています。私は、ユーザーが日付を選択できるようにする必要はありません、私はちょうどそれらを実行時にそれらを修正したい。JQuery UI DatePickerを複数の日付表示

これを可能にする簡単な方法はありますか?

答えて

11

これは、beforeShowDayイベントで行うことができます。

// list of dates to highlight 
var dates = [ 
    [2011, 8, 1], 
    [2011, 8, 9], 
    [2011, 8, 25] 
]; 

$('#datepicker').datepicker({ 
    beforeShowDay: function (date){ 
     var year = date.getFullYear(), month = date.getMonth(), day = date.getDate(); 

     // see if the current date should be highlighted 
     for (var i=0; i < dates.length; ++i) 
      if (year == dates[i][0] && month == dates[i][1] - 1 && day == dates[i][2]) 
      return [false, 'ui-state-highlight ui-state-active']; 

     return [false]; 
    } 
}); 

例を参照してください:http://jsfiddle.net/william/VzZYU/

+0

はまだユーザー入力を無効にしません...しかし、これは行います! – Jonathan

+0

2つの日付の配列があり、日付のいくつかが同じ場合はどうなりますか?同じセルに2つのクラス(各配列ループに1つずつ)を持たせるにはどうすればよいですか?私は2つのforループを使ってみましたが、第1ループのクラスだけを追加します。 – otinanai

+0

あなたの例に基づいてこのフィドルをチェックしてください:http://jsfiddle.net/e3Lba5hx/2/ – otinanai

0

私はこれを行う機能がdatepickerに組み込まれているとは思わない。だから、あなたが求めていることをする簡単な方法ではないようです。

ただし、複数の日付にui-datepicker-current-dayクラスを適用することでこれを実現できます。選択したい日付のタグを見つけて手動で行う必要があります。

日付を選択できないようにするには、"disable" datepickerメソッドまたは"disabled"オプションを使用できます。しかし、それはカレンダーを薄暗くするでしょう。別の考えられる方法は、onSelectイベントを処理し、cssクラスを複数の日付に再割り当てし、ユーザーが選択した日付から削除することです。

関連する問題