Events 引导模式和日期选择器显示事件
当单击datepicker()时,会激发他的SHOW事件,但模态的SHOW.BS.modal也会激发。有什么问题吗Events 引导模式和日期选择器显示事件,events,modal-dialog,show,datapicker,Events,Modal Dialog,Show,Datapicker,当单击datepicker()时,会激发他的SHOW事件,但模态的SHOW.BS.modal也会激发。有什么问题吗 $(document).ready(function() { $('#ArrDate') .datepicker() .on("show", function(event){ alert("Q"); }); $("#dlg3000to3100") .on('show.bs.modal', function (event) { alert("W"); }); $(
$(document).ready(function() {
$('#ArrDate')
.datepicker()
.on("show", function(event){
alert("Q");
});
$("#dlg3000to3100")
.on('show.bs.modal', function (event) {
alert("W");
});
$("#dlg3000to3100")
.modal("show");
});
范例
谢谢这似乎是datepicker的一个bug(或功能?)。您可以做的是防止show.bs.modal
事件到达对话框
$('#ArrDate').on('show.bs.modal', function (event) {
event.stopPropagation();
});
这将在日期选择器级别检测事件并停止事件传播,因此
show.bs.modal
不会“冒泡”到对话框。也有类似的问题,原因是日期选择器正在监视显示事件
$('#ArrDate').on('show.bs.modal', function (event) {
event.stopPropagation();
});
一种选择是在模式上使用显示的事件,但这在所有情况下都不理想
$('#dlg3000to3100').on('shown.bs.modal', function (event) {
// modal code in here
});
更优雅的解决方案是检查事件的名称空间
$('#dlg3000to3100').on('show.bs.modal', function (event) {
if(event.namespace !== 'bs.modal') return;
// modal code in here
});
另一个解决方法是在模式事件上将show.bs.modal与show.bs.modal交换
modal.on('shown.bs.modal', function (event) {
// Do something
});
但是,如果无法将“显示”与“显示”或“隐藏”交换为“隐藏”,请使用名称空间检查
modal.on('show.bs.modal', function(e) {
if (e.namespace === 'bs.modal') {
// Do something
}
})) 先生,你是个救生员。非常感谢。