2016-12-01 91 views

回答

3

您可以覆盖选择器隐藏月份部分,并使用这个类在日期字段选择器。我做“显示:无”月节(以prvent改变组件的逻辑),并覆盖拣货机的机身风格(这是更好地使CSS规则):

Ext.define('Ext.ux.OnlyYearPicker', { 
    xtype: 'onlyyearpicker', 
    extend: 'Ext.picker.Month', 

    afterRender: function(){ 
     this.callParent(); 
     this.el.setStyle({width: '106px',}) 
    }, 

    renderTpl: [ 
    '<div id="{id}-bodyEl" data-ref="bodyEl" class="{baseCls}-body">', 
     '<div style="display: none; width:0px;" id="{id}-monthEl" data-ref="monthEl" class="{baseCls}-months">', 
      '<tpl for="months">', 
       '<div class="{parent.baseCls}-item {parent.baseCls}-month">', 
        '<a style="{parent.monthStyle}" role="button" hidefocus="on" class="{parent.baseCls}-item-inner">{.}</a>', 
       '</div>', 
      '</tpl>', 
     '</div>', 
     '<div id="{id}-yearEl" data-ref="yearEl" class="{baseCls}-years">', 
      '<div class="{baseCls}-yearnav">', 
       '<div class="{baseCls}-yearnav-button-ct">', 
        '<a id="{id}-prevEl" data-ref="prevEl" class="{baseCls}-yearnav-button {baseCls}-yearnav-prev" hidefocus="on" role="button"></a>', 
       '</div>', 
       '<div class="{baseCls}-yearnav-button-ct">', 
        '<a id="{id}-nextEl" data-ref="nextEl" class="{baseCls}-yearnav-button {baseCls}-yearnav-next" hidefocus="on" role="button"></a>', 
       '</div>', 
      '</div>', 
      '<tpl for="years">', 
       '<div class="{parent.baseCls}-item {parent.baseCls}-year">', 
        '<a hidefocus="on" class="{parent.baseCls}-item-inner" role="button">{.}</a>', 
       '</div>', 
      '</tpl>', 
     '</div>', 
     '<div class="' + Ext.baseCSSPrefix + 'clear"></div>', 
     '<tpl if="showButtons">', 
      '<div class="{baseCls}-buttons">{%', 
       'var me=values.$comp, okBtn=me.okBtn, cancelBtn=me.cancelBtn;', 
       'okBtn.ownerLayout = cancelBtn.ownerLayout = me.componentLayout;', 
       'okBtn.ownerCt = cancelBtn.ownerCt = me;', 
       'Ext.DomHelper.generateMarkup(okBtn.getRenderTree(), out);', 
       'Ext.DomHelper.generateMarkup(cancelBtn.getRenderTree(), out);', 
      '%}</div>', 
     '</tpl>', 
    '</div>' 
] 
}); 

更多的细节,你会发现在小提琴手。看起来很丑,但工作。我认为你会更好地使用组合框之类的东西。如果DatePicker用户使用Ok按钮选择某个值,则非常奇怪。

Fiddler

+0

非常感谢! – Steefler35

0

谁的人有问题,浏览器,转换createPicker功能成这样:

createPicker: function() { // Converted function to Chrome 
     var me = this, 
      format = Ext.String.format, 
      pickerConfig; 

     pickerConfig = { 
      pickerField: me, 
      ownerCmp: me, 
      renderTo: document.body, 
      floating: true, 
      hidden: true, 
      focusOnShow: true, 
      minDate: me.minValue, 
      maxDate: me.maxValue, 
      disabledDatesRE: me.disabledDatesRE, 
      disabledDatesText: me.disabledDatesText, 
      disabledDays: me.disabledDays, 
      disabledDaysText: me.disabledDaysText, 
      format: me.format, 
      showToday: me.showToday, 
      startDay: me.startDay, 
      minText: format(me.minText, me.formatDate(me.minValue)), 
      maxText: format(me.maxText, me.formatDate(me.maxValue)), 
      listeners: { 
       select: { 
        scope: me, 
        fn: me.onSelect 
       }, 
       monthdblclick: { 
        scope: me, 
        fn: me.onOKClick 
       }, 
       yeardblclick: { 
        scope: me, 
        fn: me.onOKClick 
       }, 
       OkClick: { 
        scope: me, 
        fn: me.onOKClick 
       }, 
       CancelClick: { 
        scope: me, 
        fn: me.onCancelClick 
       } 
      }, 
      keyNavConfig: { 
       esc: function() { 
        me.collapse(); 
       } 
      }, 
     }; 

     if (Ext.isChrome) { 
      me.originalCollapse = me.collapse; 
      pickerConfig.listeners.boxready = { 
       fn: function() { 
        this.picker.el.on({ 
         mousedown: function() { 
          this.collapse = Ext.emptyFn; 
         }, 
         mouseup: function() { 
          this.collapse = this.originalCollapse; 
         }, 
         scope: this 
        }); 
       }, 
       scope: me, 
       single: true 
      }; 
     } 

     return Ext.create('Ext.ux.OnlyYearPicker', pickerConfig); 
    }, 

这里你可以看到一个例子:https://fiddle.sencha.com/#fiddle/1lmp

如果没有,你的选择器会消失在每点击年份选择。

相关问题