私はまったく同じ問題/要件に遭遇しました。Alexのソリューションに非常によく似たものを試しましたが、datetimepickerは、日が選択されたときにすべてのスタイルとイベントバインディングを消去するように見えるため(再構築されていると思いますが、チェックしていません)、機能しません。起動するdblclickイベント。
私はきれいではないがうまくいく解決策を思いついた。次のように、datetimepickerのonSelectイベントを使用して、いくつかのハンドラーをバインドできます。
(this ._ $ inputが使用されている入力コントロールへの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が気になる場合は、メソッドが終了するまでポップアップが作成されないため、setTimeoutが必要です。これがないと、これらのセレクターは何も返しません。
ダブルクリックの一部であるかどうかに関係なく、現在選択されている日付がクリックされると、私のソリューションでもピッカーが閉じられることに間違いなく気づきました。これは私の場合は意図的なものです(また、beforeShowイベントで同じロジックをトリガーしてハンドラーをワイヤリングするため、現在選択されている日付をクリックすると常にピッカーが閉じます)。あなたの場合、ダブルクリックで厳密に機能させたい場合は、クリック間の時間を追跡し、クリックが一定のしきい値内に到達することを確認することをお勧めします。