From 7ffcaa2e3b673e7e4178293224d5a15f65cbbcf9 Mon Sep 17 00:00:00 2001 From: Roman Salnikov Date: Mon, 19 Nov 2012 09:14:59 -0500 Subject: [PATCH] Datepicker: reinitialize datepicker if mainDiv isn't on the page. Fixed #5679 - Datepicker should reinitialize if dpDiv is removed --- tests/unit/datepicker/datepicker_core.js | 10 ++++++++++ ui/jquery.ui.datepicker.js | 8 ++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/tests/unit/datepicker/datepicker_core.js b/tests/unit/datepicker/datepicker_core.js index ae51b41d0..3c88059d1 100644 --- a/tests/unit/datepicker/datepicker_core.js +++ b/tests/unit/datepicker/datepicker_core.js @@ -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 diff --git a/ui/jquery.ui.datepicker.js b/ui/jquery.ui.datepicker.js index 584f21aaa..823934e05 100644 --- a/ui/jquery.ui.datepicker.js +++ b/ui/jquery.ui.datepicker.js @@ -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']. -- 2.39.5