2013-12-18 17 views
0

Я унаследовал приложение, которое использует ExtJS и относительно незнакомо с его соглашениями.ExtJS xtype timefield - установлено значение по умолчанию

У меня есть поле выбора для ввода времени, которое по умолчанию используется для прошедшего времени. Можно ли установить selected = selected для значения, которое оно по умолчанию имеет? В настоящее время отображается время по умолчанию, но когда вы нажимаете на поле, список параметров по умолчанию присваивается первому значению (так что если по умолчанию он 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 в этом случае). Я надеюсь, что список опций по умолчанию будет выбран по умолчанию (аналогично). Благодаря!

Edit # 2: Приложение использует v4.0.7

+0

Можете ли вы пояснить эту часть «Можно ли выбрать selected = selected для значения, которое оно по умолчанию?». Спасибо –

+0

Обычно элемент формы select позволит вам использовать по умолчанию для элемента в списке (например, http://stackoverflow.com/questions/3518002/how-to-set-default -value-к-HTML-Select-элемент). Когда пользователь нажимает на раскрывающийся список, чтобы изменить время, я бы хотел по умолчанию указать время, а не первый элемент в списке. Поэтому, если по умолчанию он будет равен 2pm, когда они нажмут на него, они будут видеть вариант 2pm, а не 12:00 AM. – Matt

+1

Это поведение по умолчанию: https://fiddle.sencha.com/#fiddle/29k –

ответ

2

Решение простое затем: обновить версию Ext! Не так просто? Отметьте это тем временем. Должен признаться, что я попытался скопировать код v4.2 из Ext.form.field.Time в 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); 
     } 
    } 
}); 
Смежные вопросы