我遇到了完全相同的问题/要求。我尝试了一些与Alex的解决方案非常相似的东西,但它不起作用,因为datetimepicker似乎在选择一天的时候擦除所有样式和事件绑定(我假设它正在重构,但没有选中),这使得dblclick事件触发。
我想出了一个解决方案,它不漂亮,但工作。您可以使用DateTimePicker的onSelect事件绑定几个处理程序如下:
(假设这._ $输入正在使用一个jQuery参考输入控制)
this._$input.datetimepicker({
...
onSelect: function() {
var self = this;
setTimeout(
function() {
$('.ui-datepicker-current-day').bind('click', function() { self._$input.datepicker('hide'); });
$('.ui-datepicker-current-day').bind('dblclick', function() { self._$input.datepicker('hide'); });
},
0
);
}
你可能想知道为什么我要绑定点击和双击,特别是根据我上面的说法,双击不起作用。在Chrome,FireFox,Safari和Opera中,事件似乎会触发“点击”事件,但在IE中它会触发“dblclick”事件。另外,如果您想知道setTimeout,那么这是必需的,因为弹出窗口在方法结束之前不会被构建,所以如果没有它,那么这些选择器将不会返回任何东西。
您无疑已经注意到,当点击当前所选日期时,我的解决方案也会关闭选取器,而不管它是否是双击的一部分。这在我的情况是故意的(我也触发beforeShow事件中的相同逻辑来连接处理程序,因此单击当前选定的日期将始终关闭该选择器)。在你的情况下,如果你希望它能够严格按照双击工作,我可以推荐的是你跟踪点击之间的时间,并确保它们在某个阈值内到达。
我必须说,我真的很惊讶,网上有一个dblclick事件! (有趣的是,当你不在app开发一段时间时你错过了什么......)无论如何,你有什么方式向用户表明这是预期的行为?您如何提醒用户双击是您期望他们执行此功能的方式?如果您没有更好的方式让用户这样做,那么我会重新评估一下,而不是使用桌面上比网上更常见的事件类型。只是我的$ .02! –
使用该解决方法:http://stackoverflow.com/a/16042436/1414562 –