2016-10-06 5 views
0

jQuery UI Datepickerは、あるカレンダーから次のカレンダーに移動しますか?私は、ユーザーが日付などを選択した後、次への1つのカレンダーからの移動の方法を探しています

  • ユーザーはdateFrom
  • 自動的に閉じるdateFromカレンダーをピックアップしdateToバージョン
を表示します

私は解決策に近いように感じますが、dateToカレンダーがポップアップしてすぐに消えると、私はカレンダーのonSelect機能にフックしています。instdateFromカレンダーは、その後、私は例えばdateToテキストボックスに.focus()呼び出す:

$('.datepicker > input').datepicker({ 
     // snip..... 
     onSelect: function (dateText, inst) { 
      var type = $('#' + inst.id).data('calendar'); 
      if (type === 'date-from') { 
       $('.js-hook--date-to').focus(); 
      } 
     } 
}); 

マークアップ:

<div class="large-2 columns"> 
    <div class="datepicker"> 
     <asp:TextBox ID="txtDateFrom" runat="server" placeholder="CHECK IN" data-calendar="date-from" /> 
    </div> 
</div> 
<div class="large-2 columns"> 
    <div class="datepicker"> 
     <asp:TextBox ID="txtDateTo" runat="server" CssClass="js-hook--date-to" placeholder="CHECK OUT" data-calendar="date-to" /> 
    </div> 
</div> 

これは、次のカレンダーがポップアップする原因となるが、それは消え、達成するための簡単な方法がありますこの?

編集*

私も成功しません.datepicker("show");を使用してみました。

第二編集*

jsFiddle to demonstrate

+0

可能な複製を:日付をクリックすると閉じるピッカーを防ぎます](http://stackoverflow.com/questions/1252512/jquery-datepicker-prevent-closing-picker-when-clicking-a-date) – blgt

+0

@blgtこれはどういう意味ですか?最初の日付で日付が選択されたら、別の別のカレンダーオブジェクトを表示します。残念ながらこの問題とは関係ありません。 – DGibbs

+0

ウィジェットをすぐに使用している場合、ページ上に1つのdivしか描画されず、すべての入力フィールドに再利用されます。 '.focus()'を使って入力スワップをすでに取得していると、問題が開いているように見えます。そうでない場合は、MCVEを作ることができますか? – blgt

答えて

1

焦点をトリガする前に短い遅延を使用してください。

onSelect: function(dateText, inst) { 
    var type = $('#' + inst.id).data('calendar'); 
    if (type === 'date-from') { 
    setTimeout(function() { 
     $('.js-hook--date-to').focus(); 
    }, 50) 

    } 
} 

コメントに記載されているように、プラグインはすべてのインスタンスに対して1つのコンテナしか使用しません。

は、私が「最初のインスタンスが非常に閉じていないとあなたがフォーカスをトリガーする場合、新しいインスタンスは、私は、任意の遅延を設定しなかったの最初の

でのイベントから隠さなっているクリーンアップので、何が起こっていることだと思います何が最善であるかを見るためにそれを多用してください。

DEMO

+0

パーフェクト、ありがとう。タイムアウトなしでこれを行うといいですが、これで十分です。 – DGibbs

+0

はapiで見ていませんが、閉じられたイベントがあるかもしれません。 – charlietfl

+0

うん、 'onClose'があります。代わりに' type'をチェックしています。次のカレンダーオブジェクトに移動すると、タイムアウトは必要ありませんが、おかげさまで、他の人に役立つように、これを回答として追加します。 – DGibbs

0

私はこのonCloseを使用して日付がgetDateで選択されたかどうかをチェックやって管理:[jQueryの日付ピッカーの

onClose: function (dateText, inst) { 
     var picker = $('#' + inst.id); 
     var type = picker.data('calendar'); 
     var date = picker.datepicker('getDate'); 
     if (type === 'date-from' && date !== null) { 
      $('.js-hook--date-to').focus(); 
     } 
} 
関連する問題