回答:
イベントchangedate()
を使用して、日付が変更された日時を追跡し、選択後にdatepicker('hide')
を非表示にするメソッドを使用できますdatepicker
。
$('yourpickerid').on('changeDate', function(ev){
$(this).datepicker('hide');
});
更新
これはのバグでしたautoclose: true
。このバグは最新のマスターで修正されました。参照してくださいCOMMIT。から最新のコードを入手GitHub
if (ev.viewMode === 'days') {$(this).datepicker('hide');}
します。おそらく、月または年を選択した後に日付ピッカーを非表示にしたくないためです}
$(".date").datepicker({... autoclose: true, ... });
うまく動作します!!!
それが誰かの助けになるなら、ブートストラップ日付ピッカーのバージョン2.0は、受け入れられた回答で動作しなくなります。
ここに私がそれを私の仕事にした方法があります:
$('yourpickerid').datepicker({
format: 'dd/mm/yyyy',
}).on('changeDate', function(e){
$(this).datepicker('hide');
});
http://bootstrap-datepicker.readthedocs.org/en/latest/events.html#changedateを参照してください
カレンダーの動作を全般的にオーバーライドしたい場合は、Datepicker関数を編集してみてください(この例では82行目です)。
から
this.autoclose = false;
に
this.autoclose = true;
すべてのカレンダーインスタンスが同じように動作するようにしたかったので、うまくいきました。
この行を使用すると、入力要素の非表示イベントをブロックして問題を停止できます。
var your_options = { ... };
$('.datetimepicker').datetimepicker(your_options).on('hide', function (e) {
e.preventDefault();
e.stopPropagation();
});
bootstrap-datepicker.js
var defaults = $.fn.datepicker.defaults
autoclose: true
プロジェクトを保存して更新すると、これが実行されます。
ブートストラップ4では、「autoHide:true」を使用します
$('#datepicker1').datepicker({
autoHide: true,
format: 'mm-yyyy',
endDate: new Date()
});
$('.datepicker').datepicker({
autoclose: true
});
autoclose: true
サンプルコードにもこれがあります。
ソースコードbootstrap-datepicker.jsを変更できます。のthis.hide();
ように追加
if (this.viewMode !== 0) {
this.date = new Date(this.viewDate);
this.element.trigger({
type: 'changeDate',
date: this.date,
viewMode: DPGlobal.modes[this.viewMode].clsName
});
this.hide();//here
}
それでも私はフォーマットを書いていても示すクロックに問題が発生した:「YYYY-MM-DD」、
私は設定する必要がpickTime: false
あり、変更後- >非表示にフォーカス- >表示する必要がありました
$('#VBS_RequiredDeliveryDate').datetimepicker({
format: 'YYYY-MM-DD',
pickTime: false
});
$('#VBS_RequiredDeliveryDate').on('change', function(){
$('.datepicker').hide();
});
$('#VBS_RequiredDeliveryDate').on('focus', function(){
$('.datepicker').show();
});
日時ピッカー用
$('yourpickerid').datetimepicker({
format: 'dd/mm/yyyy',
}).on('changeDate', function(e){
$(this).datetimepicker('hide');
});