5

カレンダーで現在アクティブな月の月を取得したい。たとえば、現在の月(2012年12月)には11月26日から30日が含まれます(ただし、表示されません)。これは、beforeShowDay(日付)関数が「日付」でループするときに含まれます。最初にDec'11'(0ベースのインデックス)を取得したいのですが、これを取得する方法が見つかりません。

最初に11月の月番号が表示されるため、使用date.getMonth() + 1しても機能しませんが、カレンダーで選択された月である12月が必要です。最終的に「日付」を介してループに入ると12月になりますが、その時点では遅くなります。

これを取得する方法はありますか?

4

2 に答える 2

2
var datePicker = $('#datepicker')
    datePicker.datepicker();
var date  =  datePicker.datepicker('getDate');

alert(date.getMonth())

11(現在)を出力しますが、これはカレンダーの日付ピッカーが初期化または表示された後にのみ機能します。これは、ドキュメント(入力フィールド)からのマークアップを使用する場合、アラートを受け取らないことを意味します。この回避策は、日付ピッカーを入力を囲むdivに設定し、入力がフォーカスを取得または失ったときに日付ピッカーの表示/非表示をトリガーすることです。

このフィドルのライン上の何か。少し醜いですが、入力部分の回避策として役立つはずです。

var datePicker = $('#datepicker')
    datePicker.datepicker();
    datePicker.hide();

var date  =  datePicker.datepicker('getDate');

alert(date.getMonth());

$("[rel='#datepicker']").focus(function(){
   datePicker.show(); 
});

$("[rel='#datepicker']").blur(function(){
   datePicker.hide(); 
});

次のHTMLを使用します。

<input rel='#datepicker' type='text'/>
<div id='datepicker'></div>​

更新メソッド でカレンダーの月を取得する方法も尋ねますbeforeShow。私の考えでは、2つの選択肢があります。オプションを上書きする月を設定したかdefaultMonth、現在の月になります。手動で設定した場合は、すでに持っています。設定していない場合は、おそらくと同じ番号になりますnew Date().getMonth()(この場合、おそらくご想像のとおり、11)。

于 2012-12-14T09:29:23.870 に答える
1

私があなたを正しく理解していれば、これはあなたが探しているものです:http: //jsfiddle.net/kACfV/

// Initially, set current date as the active month.
var activeMonth = new Date().getMonth() + 1;

$(function() {
    $("#datepicker").datepicker({ 
        // This is run before beforeShowDay(date).
        onChangeMonthYear: function (year, month, inst) {
            activeMonth = month; // Store active month when month is changed.
        },
        beforeShowDay: function (date) {
            // Do your logic here with activeMonth.
            console.log(date + " > " + activeMonth);
            return [true, ""]
        }
    });
});
于 2012-12-14T09:58:12.907 に答える