Добавить класс CSS с проверкой нокаута

Я хочу добавить класс CSS в элемент select в моем представлении, моя модель представления имеет свойство, которое я расширил с помощью функции "Нокаут-валидация":

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 при отправке моей формы? Любые идеи?

Ответы

Ответ 1

Оформить заказ ссылка

Сказано, что вам нужно установить decorateElement в true для применения CSS классы для ввода тегов.

Поэтому, когда я применяю этот параметр во всем мире, он работает:

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

Ознакомьтесь с этим jsfiddle демо

Примечание. В более поздних версиях библиотеки проверки нокаута параметр конфигурации decorateElement был переименован в decorateInputElement (подробнее)