ExtJS'datefield'验证覆盖

时间:2011-04-17 12:29:22

标签: javascript validation extjs override extjs3

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

EG。输入“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调试器显示验证事件和验证功能正确用于日期但是,当我尝试输入age(int)时,在点击输入字段后获取值并尝试从中生成日期,呈现猜测日期回到字段中,然后调用那么验证。

我能找到的唯一记录的before-validate事件是

stripCharsRe

默认为NULL。

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

1 个答案:

答案 0 :(得分:2)

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

(我知道这不会直接回答你的问题,但由于DateField是为了处理Date对象而构建的,因此当前的方法会遇到问题)

编辑 -

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