2013-12-18 28 views
0

我已经继承了一个使用ExtJS的应用程序,并且对它的约定比较陌生。ExtJS xtype时间域 - 设置默认选择

我有一个时间输入的选择框,默认为一个时间传入。是否有可能设置选定=选择它默认的值?目前显示的是默认时间,但是当你点击该框时,选项列表默认为第一个值(所以如果默认时间是下午2点,当你点击选择另一个时间时,你将被带到上午12点而不是下午2点)。

代码:

{ 
      xtype: 'timefield', 
      id: 'timeselect', 
      name: 'starttime', 
      fieldLabel: 'Start Time', 
      labelWidth: 80, 
      labelAlign: 'right', 
      width: 160, 
      minValue: '12:00 AM', 
      maxValue: '11:55 PM', 
      value: MyApp.config.AppConfig.time, //Current time rounded to hour 
      increment: 15 
     }, 

谢谢!

编辑:澄清。选择框显示页面加载时的正确时间。但是,当用户点击选择时,它们被带到选项列表的开始处(在这种情况下,上午12:00)。我希望将选项列表默认设置为所选时间(类似于)。谢谢!

编辑#2:该应用程序使用v4.0.7

+0

你能说清楚这部分“是否可以设置selected =选中默认值?”。谢谢 –

+0

通常情况下,选择表单元素可让您使用默认为列表中的项目(即http://stackoverflow.com/questions/3518002/how-to-set-default - 值换HTML选元素)。当用户点击下拉菜单来改变时间时,我想默认显示的时间,而不是列表中的第一项。所以如果它默认为下午2点,当他们点击它时,他们会看到2pm选项,而不是12:00 AM。 – Matt

+1

这是默认行为:https://fiddle.sencha.com/#fiddle/29k –

回答

2

解决方法很简单,那么:升级你的分机的版本!不那么简单?在此期间修补它。我必须承认,我试图将Ext.form.field.Time的v4.2的代码复制到the fiddle。这没有用。这里有一个更清洁的方法:

Ext.define('Ext.ux.fix.Ext.form.field.Time.CurrentSelectionOnExpand', { 
    override: 'Ext.form.field.Time' 

    ,initComponent: function() { 
     this.callParent(); 
     this.on({ 
      scope: this 
      ,delay: 1 // let render 
      ,expand: function() { 
       this.highlightCurrent(); 
      } 
     }); 
    } 

    // copied from Ext.view.BoundListKeyNav.method#highlightAt() 
    ,highlightCurrent: function() { 
     var me = this, 
      picker = me.picker, 
      index = picker.store.find('disp', me.getRawValue()), 
      item = picker.all.item(index) 
     if (item) { 
      item = item.dom; 
      picker.highlightItem(item); 
      picker.getTargetEl().scrollChildIntoView(item, false); 
     } 
    } 
});