aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Salnikov <bardt.dz@gmail.com>2012-11-19 09:14:59 -0500
committerMike Sherov <mike.sherov@gmail.com>2012-11-19 09:15:10 -0500
commit7ffcaa2e3b673e7e4178293224d5a15f65cbbcf9 (patch)
treee80345e7d8cc065e60d095009b56bf67660d87d4
parentcf9fbce13931732dc4b06d491ef2a01c4921faf1 (diff)
downloadjquery-ui-7ffcaa2e3b673e7e4178293224d5a15f65cbbcf9.tar.gz
jquery-ui-7ffcaa2e3b673e7e4178293224d5a15f65cbbcf9.zip
Datepicker: reinitialize datepicker if mainDiv isn't on the page. Fixed #5679 - Datepicker should reinitialize if dpDiv is removed
-rw-r--r--tests/unit/datepicker/datepicker_core.js10
-rw-r--r--ui/jquery.ui.datepicker.js8
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'].