EXTJS CustomDateField禁用手动文本输入

时间:2011-09-17 23:15:00

标签: javascript extjs

我有ExtJS网格(editorGridPanel),其中一个单元格是CustomDateField。 如何禁用手动输入此字段内的日期?

我尝试将监听器添加到编辑器,但没有按键事件(!)来禁用输入。 另外 - 我尝试向整个网格添加监听器,=但是当编辑器处于活动状态时,它不会被触发网格按键事件。

请帮助我。这是字段定义:

{                         
  header : "Release Date",
  dataIndex : 'releasedate',
  sortable : true,
  width: 90,

  locked: true,

  renderer: function(value, metaData, r) { 
      metaData.attr = rowcolor(r.data.status);
      return value;
  },

  editor : new Ext.ux.form.CustomDateField({
      allowBlank: true,
      format: 'm/d/Y',
      width : 120

  /* this not works VVVV */
      ,listeners: {
              'keypress' : function (field_, new_, old_  )  {
                $.log( "Field", field_ );
                $.log( "New", new_ );
                $.log( "Old", old_ );
          }
      }


  })
 },

谢谢!

2 个答案:

答案 0 :(得分:0)

这是答案:

  editor : new Ext.form.DateField({ /*Ext.ux.form.Custom*/
      allowBlank: true,
      format: 'm/d/Y',
      width : 120,
      enableKeyEvents: true,


      listeners: {
              'keydown' : function (field_, e_  )  {
//                    $.log( "keydown", field_, e_ );
                e_.stopEvent();
                return false;
          }
      }


  })

答案 1 :(得分:0)

要防止手动输入,只需将编辑器的“可编辑”属性设置为false即可。这是默认的。

您的网格列将如下:

header: 'Test',
dataIndex: 'xyz',
editor: {
    xtype: 'datefield',
    editable: false,
}

这是框架本身提供的更好的解决方案。