]> source.dussan.org Git - jquery-ui.git/commitdiff
Datepicker: reinitialize datepicker if mainDiv isn't on the page. Fixed #5679 - Datep...
authorRoman Salnikov <bardt.dz@gmail.com>
Mon, 19 Nov 2012 14:14:59 +0000 (09:14 -0500)
committerMike Sherov <mike.sherov@gmail.com>
Mon, 19 Nov 2012 14:15:10 +0000 (09:15 -0500)
tests/unit/datepicker/datepicker_core.js
ui/jquery.ui.datepicker.js

index ae51b41d066771213ef63bb1ae438e51f47a7b44..3c88059d11f1611a1a881b0b71de41c4b4245b9b 100644 (file)
@@ -6,6 +6,16 @@
 
 module("datepicker: core");
 
+test("initialization - Reinitialization after body had been emptied.", function() {
+       expect( 1 );
+       var bodyContent = $('body').children(), inp = $("#inp");
+       $("#inp").datepicker();
+       $('body').empty().append(inp);
+       $("#inp").datepicker();
+       ok( $("#"+$.datepicker._mainDivId).length===1, "Datepicker container added" );
+       $('body').empty().append(bodyContent); // Returning to initial state for later tests
+});
+
 test( "widget method - empty collection", function() {
        expect( 1 );
        $( "#nonExist" ).datepicker(); // should create nothing
index 584f21aaa7935779a44c58e7ab4736fb4612ebfe..823934e05c3770767bd64724ab0913b1a170ec3f 100644 (file)
@@ -2023,11 +2023,15 @@ $.fn.datepicker = function(options){
 
        /* Initialise the date picker. */
        if (!$.datepicker.initialized) {
-               $(document).mousedown($.datepicker._checkExternalClick).
-                       find(document.body).append($.datepicker.dpDiv);
+               $(document).mousedown($.datepicker._checkExternalClick);
                $.datepicker.initialized = true;
        }
 
+       /* Append datepicker main container to body if not exist. */
+       if ($("#"+$.datepicker._mainDivId).length === 0) {
+               $('body').append($.datepicker.dpDiv);
+       }
+
        var otherArgs = Array.prototype.slice.call(arguments, 1);
        if (typeof options === 'string' && (options === 'isDisabled' || options === 'getDate' || options === 'widget')) {
                return $.datepicker['_' + options + 'Datepicker'].