diff options
author | Karl Kirch <karl.ctr.kirch@faa.gov> | 2011-08-09 09:55:50 -0400 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2011-08-09 09:58:13 -0400 |
commit | 1b5af10bb1f4602885ea7be41262d3cd7e72adc4 (patch) | |
tree | f6db8d7571c521391e45daeffa13a5412bc84650 | |
parent | c5799b51415cd6c855a05028bf55abe69f570313 (diff) | |
download | jquery-ui-1b5af10bb1f4602885ea7be41262d3cd7e72adc4.tar.gz jquery-ui-1b5af10bb1f4602885ea7be41262d3cd7e72adc4.zip |
Datepicker: Added ability to stop datepicker from beforeShow. Fixes #7602 - Ability to stop datepicker from appearing with beforeShow event handler.
(cherry picked from commit d14629735648fb10403e38eac2b764ce6adf56c9)
-rw-r--r-- | tests/unit/datepicker/datepicker_tickets.js | 33 | ||||
-rw-r--r-- | ui/jquery.ui.datepicker.js | 8 |
2 files changed, 40 insertions, 1 deletions
diff --git a/tests/unit/datepicker/datepicker_tickets.js b/tests/unit/datepicker/datepicker_tickets.js index c7fde60de..6edff64e8 100644 --- a/tests/unit/datepicker/datepicker_tickets.js +++ b/tests/unit/datepicker/datepicker_tickets.js @@ -29,6 +29,39 @@ test('beforeShowDay-getDate', function() { inp.datepicker('hide'); }); +test('Ticket 7602: Stop datepicker from appearing with beforeShow event handler', function(){ + var inp = init('#inp',{ + beforeShow: function(){ + return false; + } + }); + var dp = $('#ui-datepicker-div'); + inp.datepicker('show'); + equals(dp.css('display'), 'none',"beforeShow returns false"); + inp.datepicker('destroy'); + + inp = init('#inp',{ + beforeShow: function(){ + } + }); + dp = $('#ui-datepicker-div'); + inp.datepicker('show'); + equal(dp.css('display'), 'block',"beforeShow returns nothing"); + inp.datepicker('hide'); + inp.datepicker('destroy'); + + inp = init('#inp',{ + beforeShow: function(){ + return true; + } + }); + dp = $('#ui-datepicker-div'); + inp.datepicker('show'); + equal(dp.css('display'), 'block',"beforeShow returns true"); + inp.datepicker('hide'); + inp.datepicker('destroy'); +}); + test('Ticket 6827: formatDate day of year calculation is wrong during day lights savings time', function(){ var time = $.datepicker.formatDate("oo", new Date("2010/03/30 12:00:00 CDT")); equals(time, "089"); diff --git a/ui/jquery.ui.datepicker.js b/ui/jquery.ui.datepicker.js index df6bdd419..417758756 100644 --- a/ui/jquery.ui.datepicker.js +++ b/ui/jquery.ui.datepicker.js @@ -625,6 +625,7 @@ $.extend(Datepicker.prototype, { }, /* Pop-up the date picker for a given input field. + If false returned from beforeShow event handler do not show. @param input element - the input field attached to the date picker or event - if triggered by focus */ _showDatepicker: function(input) { @@ -641,7 +642,12 @@ $.extend(Datepicker.prototype, { $.datepicker._curInst.dpDiv.stop(true, true); } var beforeShow = $.datepicker._get(inst, 'beforeShow'); - extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]) : {})); + var beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}; + if(beforeShowSettings === false){ + //false + return; + } + extendRemove(inst.settings, beforeShowSettings); inst.lastVal = null; $.datepicker._lastInput = input; $.datepicker._setDateFromField(inst); |