2014-09-22 53 views
9

當單擊下拉列表選擇單個月份/年份時,對話框消失,就像我試圖單擊一下。ExtJS 5 xtype datefield在選擇月份或年份時不起作用

小提琴:https://fiddle.sencha.com/#fiddle/9m6

Ext.onReady(function() { 
    Ext.create('Ext.form.Panel', { 
     title: 'Simple Form', 
     bodyPadding: 5, 
     width: 350, 
     // The fields 
     defaultType: 'textfield', 
     items: [{ 
      xtype: 'datefield', 
      fieldLabel: 'Start Date', 
      id: 'startDate' 
     }], 
     renderTo: Ext.getBody() 
     }); 
    }); 

這已被固定在ExtJS的點擊月選擇後5.1.0.107

EXTJS-15968日期選取器中消失。

http://docs.sencha.com/extjs/5.1/whats_new/release_notes.html

+0

請添加代碼的主要部分。如果您提供的鏈接已損壞,則代碼將不可用。 – Pred 2014-09-22 17:38:12

+0

看起來很奇怪,你應該用Sencha提出一個錯誤。這是一個更小的再現https://fiddle.sencha.com/#fiddle/amr'Ext.widget({xtype:'datefield',renderTo:Ext.getBody()});' – 2014-09-22 17:49:10

+0

作爲一種解決方法,您可以使用'ctrl + left/right'切換月份,'ctrl +上/下'切換年份 – 2014-09-22 17:58:40

回答

5

原來是在Ext.Js v 5.0.1確實是一個錯誤。 http://www.sencha.com/forum/showthread.php?289825

解決方案與壓倒一切的Ext.picker.Date類工作對我來說:

Ext.define('EXTJS-14607.picker.Date', { 
    override: 'Ext.picker.Date', 


    runAnimation: function(isHide) { 
     var me = this, 
      picker = this.monthPicker, 
      options = { 
       duration: 200, 
       callback: function() { 
        picker.setVisible(!isHide); 
        // See showMonthPicker 
        picker.ownerCmp = isHide ? null : me; 
       } 
      }; 


     if (isHide) { 
      picker.el.slideOut('t', options); 
     } else { 
      picker.el.slideIn('t', options); 
     } 
    }, 


    hideMonthPicker: function(animate) { 
     var me = this, 
      picker = me.monthPicker; 


     if (picker && picker.isVisible()) { 
      if (me.shouldAnimate(animate)) { 
       me.runAnimation(true); 
      } else { 
       picker.hide(); 
       // See showMonthPicker 
       picker.ownerCmp = null; 
      } 
     } 
     return me; 
    }, 


    showMonthPicker: function(animate) { 
     var me = this, 
      el = me.el, 
      picker; 


     if (me.rendered && !me.disabled) { 
      picker = me.createMonthPicker(); 
      if (!picker.isVisible()) { 
       picker.setValue(me.getActive()); 
       picker.setSize(el.getSize()); 
       picker.setPosition(-el.getBorderWidth('l'), -el.getBorderWidth('t')); 
       if (me.shouldAnimate(animate)) { 
        me.runAnimation(false); 
       } else { 
        picker.show(); 
        // We need to set the ownerCmp so that owns() can correctly 
        // match up the component hierarchy, however when positioning the picker 
        // we don't want it to position like a normal floater because we render it to 
        // month picker element itself. 
        picker.ownerCmp = me; 
       } 
      } 
     } 
     return me; 
    } 
}); 
相關問題