這一個很麻煩。我還在一些Bootstrap下拉菜單中有幾個日期選擇器。我用兩種方法解決了這個問題。
第一個用了jQuery的DatePicker的點擊
$('.yourDatePicker').on('hide', function(event) {
event.stopPropagation();
$(this).closest('.yourDropDown').one('hide.bs.dropdown', function(ev) {
return false;
});
});
其他更permant的解決辦法是改變datepicker.js文件本身時,向上冒泡一個時間停止的事件,但它聽起來像是你正在使用datepicker cdn。如果你可以下載並在本地使用它,你可以破解它打開如果添加e.stopPropagation()函數來這裏,你可以找到的代碼看起來像這樣
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...
,這樣
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()){
您的datepickers將停止干擾您的其他DOM元素,儘管此解決方案更爲廣泛,並且我會測試以確保它不會影響代碼中的其他區域。