在sencha touch中获取日期选择器中的日期

时间:2014-02-12 06:36:27

标签: extjs datepicker sencha-touch sencha-touch-2 picker

在这里,我试着在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());

                }
            }
        } 
    }
},

1 个答案:

答案 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);
            } 
        }
    }
}