From 5c3dc7d48ae501bd52476bfc45905130577d52c9 Mon Sep 17 00:00:00 2001 From: Dan Heberden Date: Tue, 15 Feb 2011 10:15:46 -0800 Subject: [PATCH] Datepicker: prevent datepicker initialization on empty jquery collection and add unit test. Fixed #6976 - datepicker creates extra dom element with empty object --- tests/unit/datepicker/datepicker_core.js | 5 +++++ ui/jquery.ui.datepicker.js | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/unit/datepicker/datepicker_core.js b/tests/unit/datepicker/datepicker_core.js index 9867022f710..2730ec86124 100644 --- a/tests/unit/datepicker/datepicker_core.js +++ b/tests/unit/datepicker/datepicker_core.js @@ -47,6 +47,11 @@ module("datepicker: core", { } }); +test( "widget method - empty collection", function() { + $( "#nonExist" ).datepicker(); // should create nothing + ok( !$( "#ui-datepicker-div" ).length, "Non init on empty collection" ); +}); + test("widget method", function() { var actual = $("#inp").datepicker().datepicker("widget")[0]; same($("body > #ui-datepicker-div:last-child")[0], actual); diff --git a/ui/jquery.ui.datepicker.js b/ui/jquery.ui.datepicker.js index 6c2e90795cc..ff6ebad522c 100644 --- a/ui/jquery.ui.datepicker.js +++ b/ui/jquery.ui.datepicker.js @@ -1726,7 +1726,12 @@ function isArray(a) { Object - settings for attaching new datepicker functionality @return jQuery object */ $.fn.datepicker = function(options){ - + + /* Verify an empty collection wasn't passed - Fixes #6976 */ + if ( !this.length ) { + return this; + } + /* Initialise the date picker. */ if (!$.datepicker.initialized) { $(document).mousedown($.datepicker._checkExternalClick).