这一个很麻烦。我还在一些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元素,尽管此解决方案更为广泛,并且我会测试以确保它不会影响代码中的其他区域。