1

最新のknockout-validation.jsでノックアウト2.2.1を使用します。

私の問題の実際の例については、次のjsfiddleを参照してください。

http://jsfiddle.net/tbstudee/keRPY/4/

ご覧のとおり、既存のデータが読み込まれると、整数値は検証に合格しませんが、文字列値は合格になります。これは、viewModelが既存のデータで初期化されている場合にのみ発生します。

コメントアウトするとロード時の検証エラーが削除されるため、問題がisValidフラグにあることがわかります。

self.isValid = ko.computed(function () {
    return ko.validation.group(
        self,
        {
            observable: true,
            deep: true
        }).showAllMessages(true);
}, self);

これを回避するには、ビューモデルにintではなく文字列をシードする以外に何ができますか?

4

1 に答える 1

1

maxLengthおよびminLengthは文字列用であり、使用する必要のある数値用minでありmax、そうでない場合、検証は値を文字列としてキャストすることになります。このフィドルを見てください

self.myInt = ko.observable(data.myInt).extend({
        required: true,
        number: true,
        min: 100000,
        max: 999999
    });
于 2013-03-27T16:05:52.517 に答える