1

日付範囲を選択するための2つのjquery日付ピッカーがあります。

開始日(最初の日付ピッカーから)を選択したら、2番目の(終了)日付ピッカーをアクティブにします。

以下のコードはそれを行いますが、何らかの理由で日付ピッカーをすぐに閉じます。

何か案は?-http ://jsfiddle.net/rN4zu/

From <input type="text" id="dateFrom" />
To <input type="text" id="dateTo" /> 

jQuery

$( "#dateFrom" ).datepicker({
    minDate: 0,
    maxDate: "+2Y",
    showWeek: true,
    weekHeader: 'Wk',
    onSelect: function( selectedDate ) {
        $( "#dateTo" ).datepicker("option", "minDate", selectedDate ).focus();
    }
});

$( "#dateTo" ).datepicker({
    maxDate: "+2Y",
    showWeek: true,
    weekHeader: 'Wk'
});
4

3 に答える 3

9

http://jsfiddle.net/8YTKR/

問題は、コマンドが互いに立ち向かうことに関係しています。set min date コマンドと.focusが同時に発生しているため、問題が発生しています。

まず第一に.focus、日付ピッカーをトリガーする好ましい方法ではありません。推奨される方法は、次のような datapicker show メソッドを使用すること.datepicker('show');です。したがって、この例では、代わりにそれを使用します。

'show'次に、それが min date コマンドの後に発生することを確認する必要があります。このコマンドにはコールバックがないため、setTimeout を使用します。

$( "#dateFrom" ).datepicker({
    minDate: 0, 
    maxDate: "+2Y",
    showWeek: true,
    weekHeader: 'Wk',
    onSelect: function( selectedDate ) {
        $( "#dateTo" ).datepicker("option", "minDate", selectedDate );
        setTimeout(function(){
            $( "#dateTo" ).datepicker('show');
        }, 16);     
    }
});

$( "#dateTo" ).datepicker({
    maxDate: "+2Y",
    showWeek: true,
    weekHeader: 'Wk'
});

なぜあなたが言う16ミリ秒ですか?画面に表示されずに可能な最長の遅延のためです。まさにこの理由から、16ms がデフォルトの jquery animate 間隔です。

于 2012-07-25T15:51:36.933 に答える
3
$( "#dateTo" ).datepicker("option", "minDate", selectedDate ).focus(0);
于 2012-07-25T15:47:58.800 に答える
0

私の提案は、ユーザーがいずれかの日付ピッカーで希望する日付を選択できるようにし、日付が選択された後に両方のテキスト ボックスで検証を行うことです。

最初の日付ピッカーの値から 2 番目の日付ピッカーの日付範囲を設定する際の問題は、ユーザーが誤って 7 月 21 日などを選択した場合、2 番目の日付ピッカーは 7 月 21 日に開始されますが、最初の日付を変更しようとすると日付ピッカーを 7 月 1 日まで、2 番目の日付ピッカーは 7 月 21 日以降の日付で動かなくなります

于 2012-07-25T15:47:23.723 に答える