X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Roo%2Fbootstrap%2FDateField.js;h=ba18ac35df1a2cd51b50adc28d6104dad331e8f4;hb=9be6e45a0ff049e97ab69d97706b81d8a0500fb1;hp=6aec727cb3512b893311d172dd9318558aa3ec2f;hpb=37f6a90a0ed6bb4adddf36d8abe3c026b4edf960;p=roojs1 diff --git a/Roo/bootstrap/DateField.js b/Roo/bootstrap/DateField.js index 6aec727cb3..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) { @@ -458,7 +458,9 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { place: function() { - if(this.isInline) return; + if(this.isInline) { + return; + } this.picker().removeClass(['bottom', 'top']); @@ -508,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() @@ -519,26 +521,28 @@ 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; + if(this.isInline) { + return; + } this.picker().hide(); this.viewMode = this.startViewMode; this.showMode(); - this.fireEvent('hide', this, this.date); + this.fireEvent('hidepopup', this, this.date); }, @@ -585,8 +589,9 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { fireKey: function(e) { if (!this.picker().isVisible()){ - if (e.keyCode == 27) // allow escape to hide and re-show picker - this.show(); + if (e.keyCode == 27) { // allow escape to hide and re-show picker + this.showPopup(); + } return; } @@ -596,12 +601,14 @@ Roo.extend(Roo.bootstrap.DateField, Roo.bootstrap.Input, { switch(e.keyCode){ case 27: // escape - this.hide(); + this.hidePopup(); e.preventDefault(); break; case 37: // left case 39: // right - if (!this.keyboardNavigation) break; + if (!this.keyboardNavigation) { + break; + } dir = e.keyCode == 37 ? -1 : 1; if (e.ctrlKey){ @@ -627,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); @@ -652,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(); } }, @@ -712,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 { @@ -729,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; } @@ -742,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 ){ @@ -766,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; } @@ -854,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(), @@ -876,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, ''); } }); @@ -1011,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',