【问题标题】:ExtJS: default validationExtJS:默认验证
【发布时间】:2013-09-09 21:33:00
【问题描述】:

95% 的表单字段都使用了自定义验证器 -> 因此我将其作为容器的 defaults 配置的一部分。

但是,对于剩余 5% 的字段,我想使用内置验证。有没有办法手动指定使用给定字段类型的默认验证器?

目前我正在尝试,

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

但我收到一个错误,Ext.formundefined(为什么?我显然有对 Ext 的引用 ...)

【问题讨论】:

    标签: extjs extjs4


    【解决方案1】:

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

    1. 字段特定验证器

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

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

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

      • allowBlank : (无效消息 = blankText)

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

      • minLength : (无效消息 = minLengthText)

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

      • maxLength : (无效消息 = maxLengthText)

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

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

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

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

    5. 数字字段特定验证

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

    因此,长话短说,要覆盖您在defaults 中指定的validator,您只需使用始终返回truevalidator

    {
        name: 'normalNumberField',
        xtype: 'numberfield',
        validator: function(){ return true; },
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 2012-10-30
      • 2016-07-26
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多