如何重置EXT日期字段

时间:2013-05-23 10:19:58

标签: extjs reset datefield

我使用两个日期字段作为开始日期和结束日期来选择日期范围,将这些日期字段呈现在两个单独的div中。问题是,当我按下重置按钮时,日期字段会重置但日历组件不会重置,并且仍会禁用除刷新页面之前所选日期范围之外的所有日期:

这里是一个html

<table cellspacing="6" align="center" border="0">           
<tr>
  <td><b>Report Period:</b> </td>
<td><div id="fromDateRange"></div></td>         
<td><div id="toDateRange"></div></td>
<td><input type="button" value="Search"/></td>
<td><input type="reset" value="Reset"/></td>
</tr>
</table>

这里是外部代码

var drSt = new Ext.Panel({
 labelWidth: 30, 
 border: false,
 width: 100,
 layout: 'fit',
 defaults: {width: 125},
 defaultType: 'datefield',
 items: [{
 name: 'startdt',
 id: 'startdt',
 vtype: 'daterange',
 format: 'Y-m-d',
 endDateField: 'enddt' // id of the end date field
 }]
});

drSt.render('fromDateRange');

var drET = new Ext.Panel({
    labelWidth: 30,
    border: false,
    width: 100,
    layout: 'fit',        
    defaults: {width: 125},
    defaultType: 'datefield',
    items: [{
      name: 'enddt',
      id: 'enddt',    
      vtype: 'daterange',
      format: 'Y-m-d',
      startDateField: 'startdt' // id of the start date field
    }]
  });

drET.render('toDateRange');

2 个答案:

答案 0 :(得分:1)

为您的日期字段添加一个监听器。使用选择侦听器而不是更改侦听器,因为更改事件仅在模糊时触发。或者你可以这样做

 dateFrom.addValueChangeHandler(new ValueChangeHandler<Date>() {
    @Override
    public void onValueChange(ValueChangeEvent<Date> event) {
         ...
    }
 });

要清除你可以使用这样的东西 - 根据你的需要分叉

{
    xtype: 'datefield',
    onTriggerClick: function() {
        Ext.form.DateField.prototype.onTriggerClick.apply(this, arguments);
        var btn = new Ext.Button({
            text: 'Clear'
        });
        btn.render(this.menu.picker.todayBtn.container);
    }
}

source

答案 1 :(得分:0)

onTriggerClick: function() {
    Ext.form.DateField.prototype.onTriggerClick.apply(this, arguments);
    if(!this.hasOwnProperty('btnClear')) {
        var self = this;
        this.btnClear = new Ext.Button({
            text: _('reset'),
            listeners:{
                click: function() {
                    console.log(self)
                    self.reset()
                    self.fireEvent('select')
                }
            }
        });
        this.btnClear.render(this.menu.picker.todayBtn.container);
    }
}