datefield以空字符串extjs 4的形式提交

时间:2013-12-06 13:45:17

标签: forms extjs extjs4 datefield

我一直在扫描这个网站寻找解决方案,但问题仍然存在。我在表单中有两个日期选择器,他们应该在提交表单时提交日期,但是:

      start= Ext.util.Format.date(Ext.getCmp('start').getValue(),'Ymd');
      end= Ext.util.Format.date(Ext.getCmp('end').getValue(),'Ymd');

这些代码行在GET调用服务器时导致两个空字符串。我不明白为什么。您可以在下面找到datefields的代码:

 {
xtype: 'datefield',
fieldLabel: 'Start date',
format: 'Ymd',
id:"start",
//altFormats: 'Ymd',
listeners: {
    'change': function(me) {
        alert(me.getSubmitValue());
    }
}},
{
xtype: 'datefield',
fieldLabel: 'End date',
format: 'Ymd',
id: "end",
//altFormats: 'm/d/Y',
listeners: {
    'change': function(me) {
        alert(me.getSubmitValue());
    }
}},

你是否在字段的定义下看到了两个监听器?他们完美地工作,我的意思是,当时提交的值实际上是我正在搜索的字符串,但我无法使用我向您展示的前两行代码。我甚至试着写:

   getSubmitValue()

而不是:

   getValue()

但结果并没有改变。 知道为什么吗?

2 个答案:

答案 0 :(得分:1)

更改甚至带有默认参数,因此您不需要对datefield对象进行额外调用(即'this')。

    `change( this, newValue, oldValue, eOpts )`

http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.form.field.Field-event-change

只需快速说明,您应该将“name”属性添加到您的字段以利用extjs的getter和setter。尝试使用itemId(本地范围)而不是id(全局范围)。如果您有多个相同表单的实例,这将在以后为您节省一些麻烦。

答案 1 :(得分:0)

将配置 submitFormat 添加到您的字段中,如下所示:

{
    xtype: 'datefield',
    fieldLabel: 'Start date',
    format: 'Ymd',
    submitFormat: 'Ymd',
    id:"start",
    listeners: {
        'change': function(me) {
            alert(me.getSubmitValue());
        }
    }
},
{
    xtype: 'datefield',
    fieldLabel: 'End date',
    format: 'Ymd',
    submitFormat: 'Ymd',
    id: "end",
    listeners: {
        'change': function(me) {
            alert(me.getSubmitValue());
        }
    }
}