これはとても面倒でした。また、いくつかのBootstrapドロップダウンメニュー内にいくつかの日付ピッカーがあります。私は2つの方法でこれを解決しました。
1つ目は、jQueryを使用して、DatePickerがクリックされたときにイベントが1回バブリングするのを防ぎます。
$('.yourDatePicker').on('hide', function(event) {
event.stopPropagation();
$(this).closest('.yourDropDown').one('hide.bs.dropdown', function(ev) {
return false;
});
});
もう1つのより永続的な解決策は、datepicker.jsファイル自体を変更することでしたが、datepickercdnを使用しているようです。ダウンロードしてローカルで使用できる場合は、クラックして開くと、次のようなコードが見つかります。
click: function(e){
e.preventDefault();
var target = $(e.target).closest('span, td, th'),
year, month, day;
if (target.length === 1){
switch (target[0].nodeName.toLowerCase()){
...ect...
この領域にe.stopPropagation()関数を追加すると、次のようになります
click: function(e){
e.preventDefault();
e.stopPropagation(); // <-- add this
var target = $(e.target).closest('span, td, th'),
year, month, day;
if (target.length === 1){
switch (target[0].nodeName.toLowerCase()){
日付ピッカーは他のDOM要素への干渉を停止しますが、このソリューションはより広く普及しており、コード内の他の領域に影響を与えないことを確認するためにテストします。