3

いくつかのカスタム動作を備えた日付列が必要でした。具体的には、同じフィールドに日付または年齢を入力できるようにする必要がありました (年齢は年齢としてレンダリングされたままになり、日付は日付としてレンダリングされたままになります)

例えば。「23」と入力すると、有効な値としてフィールドに「23」が残ります。または、「22/1/88」と入力すると、「22/1/88」が有効な値として残ります。

そこで、次のように定義されたエディターで datecolumn を作成してみました (検証のオーバーライドに注意してください)。

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)を入力しようとすると、フィールドに入力すると値が取得され、そこから日付を作成しようとし、推測された日付を元に戻しますフィールドに入ると、THEN validate が呼び出されます。

私が見つけることができる唯一の文書化された検証前イベントは

stripCharsRe

デフォルトは NULL です。

誰でもこれに光を当てることができますか?

4

1 に答える 1

2

この場合、TextFieldをエディター コンポーネントとして使用/構成し、カスタム バリデーターを (スニペットのように) 記述して値を検証することをお勧めします。

(これがあなたの質問に直接答えないことは知っていますが、DateField は Date オブジェクトを処理するように構築されているため、現在のアプローチには問題がたくさんあります)

編集 -

日付ピッカーが必須の場合は、基本コンポーネントとしてTriggerFieldを使用し、その onTriggerclick でDatePickerを表示します。(ユーザーがこのピッカーを使用して日付を選択したときに呼び出されるハンドラー関数を設定する必要があります。DatePicker.handler 構成オプションを参照してください)

于 2011-04-17T14:38:24.340 に答える