我正在使用 Trent Richardson 的 jQuery UI Timepicker。我知道该插件已被修改为覆盖 $.datepicker._selectDate ,以便选择器在选择日期时保持打开状态。那太棒了。
但是,我被要求在双击日期时关闭选择器。其他一切都保持不变,包括完成后关闭选择器的按钮等,只是他们希望双击也能工作。
我尝试以多种方式将双击事件绑定到日历日期(主要是以下形式的变体)$('.ui-datepicker-calendar a').bind('dblclick', function () {/*do something*/});)
——事实上,我也尝试过绑定其他事件——但似乎没有任何作用。我已经尝试过发布的建议如何通过双击关闭 DateTimePicker https://stackoverflow.com/questions/13198715/how-to-close-datetimepicker-with-a-double-click毫无喜悦。
这可能吗?我是否需要修改 onSelect 函数来区分单击和双击? (以及如何、何时event.type
未定义?)我是否绑定到了错误的元素? (我尝试绑定$('.ui-datepicker-calendar a')
, $('#ui-datepicker-div')
, $('#ui-datepicker-div .ui-datepicker-calendar a')
,以及许多其他变体。)
为了完整起见,这是我的代码:
$('#date-range-from, #date-range-to').datetimepicker({
changeYear: true,
changeMonth: true,
controlType: 'select',
dateFormat: 'M dd, yy ',
minDate: 'Jan 01, 2010 ',
maxDate: 'Dec 31, xxxx '.replace('xxxx', new Date().getFullYear() + 1),
showAnim: '',
showMinute: false,
showOtherMonths: true,
showTime: false
}).on('change', function () {
var t = $(this),
date = t.val().slice(0, 12),
fromto = t.attr('id').replace('date-range-', ''),
time = t.val().slice(-5);
dashboardOpts.dateRange[fromto].date = date;
dashboardOpts.dateRange[fromto].time = time;
}).mousedown(function () {
$('#ui-datepicker-div').toggle();
$(this).blur();
});
$('#ui-datepicker-div .ui-datepicker-calendar a').bind('dblclick', function () {
console.log('I just want to see if this event can be bound!');
});
预先感谢您的任何帮助!
Edit:为了澄清,通过“......的变体”.bind('dblclick', ...)
“我的意思是我尝试过.live('dblclick', ...)
(尽管我知道它已被弃用)并且$(element).on('dblclick', ...)
and $(document).on('dblclick', element, ...)
.
我也尝试过.stopPropagation()
and .stopImmediatePropagation()
尽管我不认为这是一个传播问题。
我相信 datetimepicker 插件的代码中有一些东西劫持了日历中的事件。不幸的是,我还没有找到它。任何见解都非常感激!