1

95% of my fields for a form I have use a custom validator -> hence I include it as apart of my defaults config of the container.

However, for the remaining 5% of fields, I want to use the built-in validation. Is there a way to manually specify using the default validator for a given field type?

Currently I try,

{
    name: 'normalNumberField',
    xtype: 'numberfield',
    validator: Ext.form.field.Number.validate,
    ...
}

but I'm getting an error that Ext.form is undefined (why? I clearly have a reference to Ext ... )

4

1 回答 1

2

默认情况下validator未指定。数字字段验证分多个步骤进行(取自 ExtJS 文档):

  1. 特定于字段的验证器

    验证器提供了一种定制和重用验证规范的方法。如果一个字段配置了一个validator 函数,它将被传递当前字段值。该validator 函数预计将返回:

    • true 如果值有效(验证继续),则为布尔值。
    • 如果无效(验证停止),则表示无效消息的字符串。
  2. 基本验证

    如果validator没有停止验证,则基本验证如下进行:

    • allowBlank: (无效消息 = blankText)

      根据 的配置allowBlank,空白字段将导致验证在此步骤停止并相应地返回布尔值 true 或 false。

    • minLength: (无效消息 = minLengthText)

      如果传递的值不满足minLength 指定的值,验证将停止。

    • maxLength: (无效消息 = maxLengthText)

      如果传递的值不满足maxLength 指定的值,验证将停止。

  3. 预配置的验证类型 (VTypes)

    如果前面的验证步骤都没有停止验证,则配置了 a 的字段vtype将使用相应的 Ext.form.field.VTypes验证功能。如果无效,则该字段的vtypeText或 VTypes vtype Text 属性将用于无效消息。字段上的击键将根据 VTypes vtype Mask 属性进行过滤。

  4. 特定于字段的正则表达式测试 如果前面的验证步骤都没有停止验证,regex则将处理字段的配置测试。此测试的无效消息配置为regexText

  5. 数字字段特定验证

    附加验证运行测试该值是否为数字,并且在配置的最小值和最大值范围内。

因此,长话短说,要覆盖您validator在 中指定的内容defaults,您可以简单地使用 a validatorwhich always return true

{
    name: 'normalNumberField',
    xtype: 'numberfield',
    validator: function(){ return true; },
    ...
}
于 2013-09-09T23:40:28.860 回答