Fixed issues to falling back to plain datepicker

This commit is contained in:
Trent Richardson 2010-09-21 12:02:59 -04:00
parent f49992774e
commit a06a031f69

View file

@ -413,13 +413,20 @@
$.datepicker._selectDate = function (id, dateStr) { $.datepicker._selectDate = function (id, dateStr) {
var target = $(id); var target = $(id);
var inst = this._getInst(target[0]); var inst = this._getInst(target[0]);
inst.inline = true; var tp_inst = $.datepicker._get(inst, 'timepicker');
inst.stay_open = true;
$.datepicker._base_selectDate(id, dateStr); if(tp_inst){
inst.stay_open = false; inst.inline = true;
inst.inline = false; inst.stay_open = true;
this._notifyChange(inst); $.datepicker._base_selectDate(id, dateStr);
this._updateDatepicker(inst); inst.stay_open = false;
inst.inline = false;
this._notifyChange(inst);
this._updateDatepicker(inst);
}
else{
$.datepicker._base_selectDate(id, dateStr);
}
}; };
//############################################################################################# //#############################################################################################
@ -438,7 +445,7 @@
$.datepicker._beforeShow = function(input, inst) { $.datepicker._beforeShow = function(input, inst) {
var beforeShow = this._get(inst, 'beforeShow'); var beforeShow = this._get(inst, 'beforeShow');
if (beforeShow) { if (beforeShow) {
inst.stay_open = true; inst.stay_open = true;
beforeShow.apply((inst.input ? inst.input[0] : null), [inst.input, inst]); beforeShow.apply((inst.input ? inst.input[0] : null), [inst.input, inst]);
inst.stay_open = false; inst.stay_open = false;
} }
@ -450,13 +457,20 @@
$.datepicker._base_doKeyPress = $.datepicker._doKeyPress; $.datepicker._base_doKeyPress = $.datepicker._doKeyPress;
$.datepicker._doKeyPress = function(event) { $.datepicker._doKeyPress = function(event) {
var inst = $.datepicker._getInst(event.target); var inst = $.datepicker._getInst(event.target);
var tp_inst = $.datepicker._get(inst, 'timepicker');
if ($.datepicker._get(inst, 'constrainInput')) {
var dateChars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')); if(tp_inst){
var chr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode); if ($.datepicker._get(inst, 'constrainInput')) {
// keyCode == 58 => ":" var dateChars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));
// keyCode == 32 => " " var chr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode);
return event.ctrlKey || (chr < ' ' || !dateChars || dateChars.indexOf(chr) > -1 || event.keyCode == 58 || event.keyCode == 32); var chrl = chr.toLowerCase();
// keyCode == 58 => ":"
// keyCode == 32 => " "
return event.ctrlKey || (chr < ' ' || !dateChars || dateChars.indexOf(chr) > -1 || event.keyCode == 58 || event.keyCode == 32 || chr == ':' || chr == ' ' || chrl == 'a' || chrl == 'p' || charl == 'm');
}
}
else{
return $.datepicker._base_doKeyPress(event);
} }
}; };