3

我需要一个具有一些自定义行为的日期列,特别是我需要能够在同一字段中输入日期或年龄(年龄保持呈现为年龄,日期保持呈现为日期)

例如。输入“23”将在字段中保留“23”作为有效值,或输入“22/1/88”将保留“22/1/88”作为有效值。

因此,我尝试使用这样定义的编辑器创建一个日期列(注意验证覆盖):

editor: {
    xtype: 'datefield',                                 
    format: 'd/m/Y',                                
    validate: function(){
      if(!this.value.match(SOME_REGEX){         
        if(!this.value.match(SOME_REGEX){
          return false;
        }           
      }             
      return true;
    }                               
}

Chrome调试器显示验证事件和验证功能正确的日期但是,当我尝试输入一个年龄(int)时,在点击输入字段后获取该值并尝试从中生成一个日期,呈现猜测的日期进入该领域,然后调用验证。

我能找到的唯一记录在案的验证前事件是

stripCharsRe

默认为 NULL。

任何人都可以对此有所了解吗?

4

1 回答 1

2

在这种情况下,我建议您使用/配置一个TextField作为编辑器组件并编写一个自定义验证器(就像在您的代码段中一样)来验证这些值。

(我知道这不能直接回答您的问题,但是由于 DateField 是为处理 Date 对象而构建的,因此您当前的方法将充满问题)

编辑 -

如果必须使用 Date Picker,请使用TriggerField作为您的基础组件,并在其 onTriggerclick 上显示DatePicker。(您必须设置一个处理函数,当用户使用此选择器选择日期时将调用该函数。请参阅 DatePicker.handler 配置选项)

于 2011-04-17T14:38:24.340 回答