0

フィールドに検証を設定しようとしていamountます。数字のみを許可します。検証に正規表現を使用することにしました。

私のモデルサーバー側:

public class InvoiceLine
{
    [Key]
    public int Id { get; set; }
    public string Description { get; set; }
    public double Amount { get; set; }
}

クライアント側の金額を検証するための正規表現:

invoiceLine.amount.extend({
    pattern: {
        message: 'warning!',
        params: '^[1-9]\d*$'
    }
});

次に、私の見解では:

<input type="text" data-bind="value: amount, valueUpdate: 'afterkeydown', validationOptions: { errorElementClass: 'input-validation-error' }" />

テスト:

  • 123有効なOK
  • azerty無効OK
  • 123abc 有効な NOK

上記のテストで、「有効/無効」と言うときは、検証の成功/失敗を意味し、「OK/NOK」と言うときは、この検証が私が期待した/期待していなかったものであることを意味します。

したがって、3 番目のテストは私が期待したものではなく、なぜ ko.validation がそれを無効としてマークしないのかわかりません。最初の文字が数字である場合はいつでも、次が何であっても、無効としてマークされていないようです。

次に、テスト目的で、モデルサーバー側を次のように変更しました。

public double Amountpublic string Amount結果は次のとおりです。

  • 123有効なOK
  • azerty無効OK
  • 123abc 無効OK

したがって、動作は astringよりも a の方が優れているようですが、より意味のある金額doubleのフィールドが必要です!double

doubleこのフィールドのタイプを保持するときに、金額に対して完全に満足のいく検証を行う方法はありますか?

ありがとう。

4

0 に答える 0