Skip to content

Commit

Permalink
Datepicker: Added ability to stop datepicker from beforeShow. Fixes #…
Browse files Browse the repository at this point in the history
…7602 - Ability to stop datepicker from appearing with beforeShow event handler.

(cherry picked from commit d146297)
  • Loading branch information
Karl Kirch authored and scottgonzalez committed Aug 9, 2011
1 parent c5799b5 commit 1b5af10
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 1 deletion.
33 changes: 33 additions & 0 deletions tests/unit/datepicker/datepicker_tickets.js
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
8 changes: 7 additions & 1 deletion ui/jquery.ui.datepicker.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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);
Expand Down

0 comments on commit 1b5af10

Please sign in to comment.