X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Roo%2Fbootstrap%2FDateField.js;h=ba18ac35df1a2cd51b50adc28d6104dad331e8f4;hb=9be6e45a0ff049e97ab69d97706b81d8a0500fb1;hp=2b1f6fb9814d5102d4557b43df1c62f28c98906f;hpb=fca0f2d52ed53e5d44abe3ef8df6c8f43266c3d9;p=roojs1 diff --git a/Roo/bootstrap/DateField.js b/Roo/bootstrap/DateField.js index 2b1f6fb981..ba18ac35df 100644 --- a/Roo/bootstrap/DateField.js +++ b/Roo/bootstrap/DateField.js @@ -147,7 +147,7 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { this.isInput = true; this.component = this.el.select('.add-on', true).first() || false; this.component = (this.component && this.component.length === 0) ? false : this.component; - this.hasInput = this.component && this.inputEL().length; + this.hasInput = this.component && this.inputEl().length; if (typeof(this.minViewMode === 'string')) { switch (this.minViewMode) { @@ -227,7 +227,7 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { this.showMode(); if(this.isInline) { - this.show(); + this.showPopup(); } }, @@ -342,7 +342,7 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { this.picker().select('>.datepicker-days tbody',true).first().dom.innerHTML = ''; - while(prevMonth.valueOf() < nextMonth) { + while(prevMonth.valueOf() <= nextMonth) { var clsName = ''; if (prevMonth.getUTCDay() === this.weekStart) { @@ -510,7 +510,7 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { onFocus : function() { Roo.bootstrap.DateField.superclass.onFocus.call(this); - this.show(); + this.showPopup(); }, onBlur : function() @@ -521,19 +521,19 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { this.setValue(d); - this.hide(); + this.hidePopup(); }, - show : function() + showPopup : function() { this.picker().show(); this.update(); this.place(); - this.fireEvent('show', this, this.date); + this.fireEvent('showpopup', this, this.date); }, - hide : function() + hidePopup : function() { if(this.isInline) { return; @@ -542,7 +542,7 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { this.viewMode = this.startViewMode; this.showMode(); - this.fireEvent('hide', this, this.date); + this.fireEvent('hidepopup', this, this.date); }, @@ -590,7 +590,7 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { { if (!this.picker().isVisible()){ if (e.keyCode == 27) { // allow escape to hide and re-show picker - this.show(); + this.showPopup(); } return; } @@ -601,7 +601,7 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { switch(e.keyCode){ case 27: // escape - this.hide(); + this.hidePopup(); e.preventDefault(); break; case 37: // left @@ -634,7 +634,9 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { break; case 38: // up case 40: // down - if (!this.keyboardNavigation) break; + if (!this.keyboardNavigation) { + break; + } dir = e.keyCode == 38 ? -1 : 1; if (e.ctrlKey){ newDate = this.moveYear(this.date, dir); @@ -659,19 +661,19 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { break; case 13: // enter this.setValue(this.formatDate(this.date)); - this.hide(); + this.hidePopup(); e.preventDefault(); break; case 9: // tab this.setValue(this.formatDate(this.date)); - this.hide(); + this.hidePopup(); break; case 16: // shift case 17: // ctrl case 18: // alt break; default : - this.hide(); + this.hidePopup(); } }, @@ -719,13 +721,16 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { // this.fill() this.setValue(this.formatDate(this.date)); - this.hide(); + this.hidePopup(); break; } break; case 'span': if (className.indexOf('disabled') < 0) { - this.viewDate.setUTCDate(1); + if (!this.viewDate) { + this.viewDate = new Date(); + } + this.viewDate.setUTCDate(1); if (className.indexOf('month') > -1) { this.viewDate.setUTCMonth(Roo.bootstrap.DateField.dates[this.language].monthsShort.indexOf(html)); } else { @@ -736,7 +741,7 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { if(this.singleMode){ this.setValue(this.formatDate(this.viewDate)); - this.hide(); + this.hidePopup(); return; } @@ -749,8 +754,8 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { //Roo.log(className); if (className.indexOf('day') > -1 && className.indexOf('disabled') < 0 ){ var day = parseInt(html, 10) || 1; - var year = this.viewDate.getUTCFullYear(), - month = this.viewDate.getUTCMonth(); + var year = (this.viewDate || new Date()).getUTCFullYear(), + month = (this.viewDate || new Date()).getUTCMonth(); if (className.indexOf('old') > -1) { if(month === 0 ){ @@ -773,7 +778,7 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { // this.fill(); //Roo.log(this.formatDate(this.date)); this.setValue(this.formatDate(this.date)); - this.hide(); + this.hidePopup(); } break; } @@ -861,7 +866,9 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { moveMonth: function(date, dir) { - if (!dir) return date; + if (!dir) { + return date; + } var new_date = new Date(date.valueOf()), day = new_date.getUTCDate(), month = new_date.getUTCMonth(), @@ -883,13 +890,15 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { new_month = month + dir; new_date.setUTCMonth(new_month); // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11 - if (new_month < 0 || new_month > 11) + if (new_month < 0 || new_month > 11) { new_month = (new_month + 12) % 12; + } } else { // For magnitudes >1, move one month at a time... - for (var i=0; i this.maxLength){ + return false; + } + if(this.vtype){ + var vt = Roo.form.VTypes; + if(!vt[this.vtype](value, this)){ + return false; + } + } + if(typeof this.validator == "function"){ + var msg = this.validator(value); + if(msg !== true){ + return false; + } + } + + if(this.regex && !this.regex.test(value)){ + return false; + } + + if(typeof(this.parseDate(value)) == 'undefined'){ + return false; + } + + if (this.endDate !== Infinity && this.parseDate(value).getTime() > this.endDate.getTime()) { + return false; + } + + if (this.startDate !== -Infinity && this.parseDate(value).getTime() < this.startDate.getTime()) { + return false; + } + + + return true; + }, + + reset : function() + { + this.date = this.viewDate = ''; + + Roo.bootstrap.DateField.superclass.setValue.call(this, ''); } }); @@ -1018,7 +1086,7 @@ Roo.apply(Roo.bootstrap.DateField, { template : { tag: 'div', - cls: 'datepicker dropdown-menu roo-dynamic', + cls: 'datepicker dropdown-menu roo-dynamic shadow', cn: [ { tag: 'div',