15

ビューの要素に CSS クラスを追加したいのですがselect、ビュー モデルには Knockout-Validation を使用して拡張したプロパティがあります。

self.selectedRootCause = ko.observable().extend({
    required: true
});

次に、私のselectは次のようになります。

<form data-bind="submit: closeComplaint" method="post"> 
    <select data-bind="options: rootCauses, 
                            optionsText: 'RootCauseText', 
                            value: selectedRootCause, 
                            optionsCaption: 'Choose..',
                            validationOptions: { errorElementClass: 
                                                 'input-validation-error' }">
    </select>

    <input type="submit" value="Close Complaint" />
</form>

私のcloseComplaint関数は次のようになります。

self.closeComplaint = function () {
    if (self.errors().length == 0) {
        $.ajax({
            url: '@Url.Action("CloseComplaint")',
            data: new DetailsComplaintAdmin(self.currentComplaint(),
                                        self.selectedRootCause().RootCauseId
                ),
            success: function (data) {
                console.log(data);
            }
        });
    }
}

完了するために、ここに私のself.errors()機能があります:

self.errors = ko.validation.group(self);

問題は、フォームを送信したときにクラスが入力にinput-validation-error追加されていないように見えることですか? select何か案は?

4

1 に答える 1

22

このリンクをチェックアウト

入力タグに CSS クラスを適用するには、に設定decorateElementする必要があると言われてい ます。 したがって、そのパラメーターをグローバルに適用すると機能します:true

ko.validation.configure({ 
    decorateElement : true
});

このjsfiddleデモをチェックしてください

: Knockout Validation ライブラリの最近のバージョンでは、decorateElement構成オプションの名前がdecorateInputElement( details )に変更されました。

于 2012-08-17T14:44:39.923 に答える