How to change the pop-up position of the jQuery DatePicker control How to change the pop-up position of the jQuery DatePicker control jquery jquery

How to change the pop-up position of the jQuery DatePicker control


Here's what I'm using:

$('input.date').datepicker({    beforeShow: function(input, inst) {        inst.dpDiv.css({            marginTop: -input.offsetHeight + 'px',             marginLeft: input.offsetWidth + 'px'        });    }});

You may also want to add a bit more to the left margin so it's not right up against the input field.


I do it directly in the CSS:

.ui-datepicker {   margin-left: 100px;  z-index: 1000;}

My date input fields are all 100px wide. I also added the z-index so the calendar also appears above AJAX popups.

I don't modify the jquery-ui CSS file; I overload the class in my main CSS file, so I can change the theme or update the widget without having to re-enter my specific mods.


Here is my variation of Datepicker calendar aligning.

I think that it's pretty nice, because you can control positioning via jQuery UI Position util.

One restriction: jquery.ui.position.js required.

Code:

$('input[name=date]').datepicker({    beforeShow: function(input, inst) {        // Handle calendar position before showing it.        // It's not supported by Datepicker itself (for now) so we need to use its internal variables.        var calendar = inst.dpDiv;        // Dirty hack, but we can't do anything without it (for now, in jQuery UI 1.8.20)        setTimeout(function() {            calendar.position({                my: 'right top',                at: 'right bottom',                collision: 'none',                of: input            });        }, 1);    }})