1

defaultsフォームのフィールドの 95% でカスタム バリデータを使用しています。そのため、コンテナの構成の一部として含めています。

ただし、残りの 5% のフィールドについては、組み込みの検証を使用したいと考えています。特定のフィールド タイプのデフォルト バリデータを使用して手動で指定する方法はありますか?

現在試しているのは、

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

しかし、私はエラーが発生していますExt.formundefinedなぜですか?私は明らかに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. 構成済みの検証タイプ (VType)

    前の検証ステップのいずれも検証を停止しない場合、 で構成されたフィールドvtypeは対応する Ext.form.field.VTypes検証機能を利用します。無効な場合、フィールドvtypeTextまたは VTypes vtype Text プロパティのいずれかが無効なメッセージに使用されます。フィールドでのキーストロークは、VTypes vtype Mask プロパティに従ってフィルタリングされます。

  4. フィールド固有の正規表現テスト 前の検証ステップのいずれも検証を停止しない場合、フィールドの構成regex済みテストが処理されます。このテストの無効なメッセージは、次のように構成されていますregexText

  5. 数値フィールド固有の検証

    追加の検証では、値が数値であり、構成された最小値と最大値の範囲内であることをテストします。

つまり、簡単に言えば、validatorで指定したものをオーバーライドするには、常に を返すdefaultsa を使用するだけです。validatortrue

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