我使用两个日期字段作为开始日期和结束日期来选择日期范围,将这些日期字段呈现在两个单独的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');
答案 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);
}
}
答案 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);
}
}