开发者

jQuery datepicker loses focus after .("show")

I'm using the range date-picker of jQuery UI. When selecting the "from date", I want to open automatically the "to date" date-picker. So, I call the .datepicker("show"). The "to date" picker is showing for a second and immediately fade away. Surprisingly, if I go to another application and then come back and focus on the browser window, the "to date" picker is shown. I also tried to add the $('开发者_Go百科#toDate').focus(); but it didn't help.

$( ".fromDatePicker" ).datepicker({
    defaultDate: "+1w",
    dateFormat: 'dd/mm/yy',
    altFormat: 'yymmdd',
    altField: "#fromDateFormatted",
    numberOfMonths: 2,
    showOn: "both",
    buttonImage: "images/calender_icon_a1.jpg", 
    buttonText: "open calendar",
    buttonImageOnly: true,
    onSelect: function( selectedDate ) {
        $('#toDate').datepicker( "option", "minDate", selectedDate );
        $('#toDate').datepicker("show");
        //$('#toDate').focus();  //commented cause it's not working
    }
});


The reason for the flashing appearance is because show would be called before minDate finishes. This would confuse datepicker when triggering beforeShowDay event just before showing the picker.

One somewhat hacky workaround is to delay the call to show the datepicker. For example, something like the following would work:

onSelect: function( selectedDate ) {
    $('#toDate').datepicker( "option", "minDate", selectedDate );
    setTimeout(function() { $('#toDate').datepicker("show") }, 50);
}

See this in action: http://jsfiddle.net/william/PVuTC/2/.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜