When button
tap
event is fired datepicker
value has not been updated yet, so picker.getValue()
returns previously selected value.
Instead of listening for tap
event on button
you should add listener for change
event on your datepicker
component. Second parameter passed into this listener contains new selected date value:
{
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);
}
}
}
}