フィールドに検証を設定しようとしてい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
有効なOKazerty
無効OK123abc
有効な NOK
上記のテストで、「有効/無効」と言うときは、検証の成功/失敗を意味し、「OK/NOK」と言うときは、この検証が私が期待した/期待していなかったものであることを意味します。
したがって、3 番目のテストは私が期待したものではなく、なぜ ko.validation がそれを無効としてマークしないのかわかりません。最初の文字が数字である場合はいつでも、次が何であっても、無効としてマークされていないようです。
次に、テスト目的で、モデルサーバー側を次のように変更しました。
public double Amount
public string Amount
結果は次のとおりです。
123
有効なOKazerty
無効OK123abc
無効OK
したがって、動作は astring
よりも a の方が優れているようですが、より意味のある金額double
のフィールドが必要です!double
double
このフィールドのタイプを保持するときに、金額に対して完全に満足のいく検証を行う方法はありますか?
ありがとう。