Trent Richardson の jQuery UI Timepicker を使用しています。$.datepicker._selectDate をオーバーライドするようにプラグインが変更されているため、日付が選択されたときにピッカーが開いたままになります。それは素晴らしいことです。
ただし、日付をダブルクリックしたときにピッカーを閉じるように求められました。完了時にピッカーを閉じるボタンなど、他のすべては同じままですが、ダブルクリックも機能するようにしたいだけです。
いくつかの方法でダブルクリック イベントをカレンダーの日付にバインドしようとしました (ほとんどのバリエーション$('.ui-datepicker-calendar a').bind('dblclick', function () {/*do something*/});)
- 実際、他のイベントもバインドしようとしましたが、何も機能していないようです。How to に投稿された提案を試しました。喜びのないダブルクリックでDateTimePickerを閉じます。
これは可能ですか?クリックとダブルクリックを区別するために onSelect 関数を変更する必要がありますか? (そして、どのようにevent.type
undefined が定義されていないのですか?) 間違った要素にバインドしていますか? (私は$('.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!');
});
助けてくれてありがとう!
編集: 明確にするために、「...のバリエーション」とは、 (非推奨であることはわかっていますが) andを.bind('dblclick', ...)
試したことを意味します。.live('dblclick', ...)
$(element).on('dblclick', ...)
$(document).on('dblclick', element, ...)
私も試みましたが.stopPropagation()
、.stopImmediatePropagation()
これが伝播の問題であるとは思いません.
datetimepicker プラグインのコードに、カレンダーのイベントをハイジャックしている何かがあると思います。残念ながら、私はまだそれを見つけることができませんでした。どんな洞察も大歓迎です!