在这里,我试着在sencha touch 2.3中获取datepickerfeild所选日期的警报。但它给出了textfeild中最后选择的日期。这意味着它选择当前未选择的现值。
请帮助解决此问题。 这是我的源代码,
{
xtype: 'datepickerfield',
destroyPickerOnHide: true,
label: 'Date',
name: 'targetDate',
dateFormat :"y/m/d",
value: new Date(),
picker: {
yearFrom : new Date().getFullYear()-1,
listeners: {
show: function(component, eOpts) {
var date = this.getValue();
if (!date || isDateInPast(date)) {
this.setValue(new Date());
}
},
cancel: function(picker, eOpts) {
this.fireEvent('change', this, null);
}
},
doneButton: {
listeners: {
tap: function(button, event, eOpts) {
var picker = this.up('datepicker');
alert(picker.getValue());
}
}
}
}
},
答案 0 :(得分:0)
当button
tap
事件被触发时datepicker
值尚未更新,因此picker.getValue()
会返回之前选择的值。
您应该在tap
组件上添加button
事件的监听器,而不是在change
上监听datepicker
事件。传入此侦听器的第二个参数包含新选择的日期值:
{
xtype: 'datepickerfield',
destroyPickerOnHide: true,
label: 'Date',
name: 'targetDate',
dateFormat :"y/m/d",
value: new Date(),
picker: {
yearFrom : new Date().getFullYear()-1,
listeners: {
show: function(component, eOpts) {
var date = this.getValue();
if (!date || isDateInPast(date)) {
this.setValue(new Date());
}
},
cancel: function(picker, eOpts) {
this.fireEvent('change', this, null);
},
change: function(picker, value) {
alert(value);
}
}
}
}