3

プロジェクトで Valdr を使用していますが、日付入力「startDate」が別の日付入力「endDate」より前であることを検証する必要があります。

<input id="startDate" name="startDate" type="text" ng-model="project.startDate"/>
<input id="endDate" name="endDate" type="text" ng-model="project.endDate"/>

Valdr がなければ、次のようにカスタム ディレクティブを使用してこの問題を解決できることはわかっています: 2 つの日付を比較するためのディレクティブ

他のフィールドの値を使用する Valdr でカスタム バリデータを作成する方法が少し不明確であることがわかりました。

4

4 に答える 4

1

答えは短いですが、不満です: valdr は現在これをサポートしていません。ただし、GitHub にはオープンな機能リクエストがあります

于 2015-08-15T20:39:04.450 に答える
0

この機能が valdr に実装されるまでは、独自のバリデータ ディレクティブを使用して、valdr と対話させることができます。ディレクティブは「フォーム」を要求することができ、比較したい日付モデルの名前を取得できます。次に、ロジックを実行して 2 つの値を比較し、適切な「ngModelController」の有効性を設定します。そのモデルに有効性を設定するときにエラーを提供する必要があるため、エラー名は valdr との接続になります。

その後、「valdrMessage」サービスでエラーをマッピングするだけです。

.run(function (valdrMessage) {

valdrMessage.angularMessagesEnabled = true;

valdrMessage.addMessages({
  'date': 'Invalid date!'
});

});

Valdr は、通常どおり、無効なフィールドの下にメッセージを表示します。

于 2015-11-14T23:57:36.647 に答える
0

このソリューションを使用できます:

  1. いずれかの日付フィールドの変更時に bool 値を計算する - 検証ルールが満たされているかどうかを示す値
  2. その値が true かどうかを確認する単純なカスタム バリデータを作成する
  3. バリデーターを登録し、その計算値に制約を追加します
  4. 検証メッセージを表示したい場所に、その計算値の非表示の入力を配置します
于 2018-03-10T20:20:17.820 に答える