web-dev-qa-db-ja.com

jQueryの.datepicker( 'setdate')の問題

.datepicker()を使用して選択された特定の日付範囲に基づいてデータを取得するクエリを実行する関数があります。クエリが実行される前に選択された日付範囲に応答データにある日付ピッカーを設定しようとしています。

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

日付ピッカーを今日の日付に設定するという興味深い結果が得られました!エラーを吐き出すだけで混乱することはありません。なぜ今日の日付に設定するのですか?

「yyyy-mm-dd」のような形式の日付を取得し、日付ピッカーを設定するにはどうすればよいですか?

私は、datepickerが 'queryDate'にリンクされているテキストボックスを設定するのが最善かもしれないと考えています。

35
Derek Adair

本当に古いブラウザをサポートする場合は、DateコンストラクターでISO8601日付形式を使用することはIE9より前ではサポートされていないため、日付文字列を解析する必要があります。

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

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

上記の例を確認してください here

34
CMS

SetDateを呼び出そうとする場合、有効なjavascript Dateオブジェクトを提供する必要があります。

queryDate = '2009-11-01';

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

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

これにより、datepickerでクエリの日付と文字列の日付表現にさまざまな形式を使用できます。このアプローチは、多言語サイトを作成するときに非常に役立ちます。もう1つの便利な関数はformatDateです。これは、javascript日付オブジェクトを文字列にフォーマットします。

$.datepicker.formatDate( format, date, settings );
73
jurka

Scobalの投稿が暗示しているように、datepickerは単なる文字列ではなくDateオブジェクトを探しています!したがって、サンプルコードを変更して、必要なことを行うには:

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

次のように変更してみてください:

queryDate = '2009-11-01';
$('#datePicker').datepicker({defaultDate: new Date (queryDate)});
7
Mark Pope
function calenderEdit(dob) {
    var date= $('#'+dob).val();
    $("#dob").datepicker({
        changeMonth: true,
        changeYear: true, yearRange: '1950:+10'
    }).datepicker("setDate", date);
}
2
jomon

MinDateまたはmaxDateオプションが設定されている場合、設定しようとしている日付が許可された日付範囲内にあることを確認してください。

1
cfwall