Нокаут-кендо-виджеты с неработающей валидацией

Мне нужно реализовать проверку нокаута с помощью нокаут-кендо.

У меня есть этот HTML:

<textarea class="k-textbox" data-bind="value: description"></textarea>
<input data-bind="kendoComboBox: { 
                  data: myOptions, 
                  value:myOptionId,
                  dataTextField: 'MyOptionName', 
                  dataValueField: 'MyOptionId'}"/>
<input data-bind="kendoDatePicker: {value: dueDate}"/>

Javascript:

...
viewModel: {
    description: ko.observable('').extend({ required: true }),
    dueDate: ko.observable('').extend({ required: true }),
    myOptions: ko.observableArray([]),
    myOptionId: ko.observable('').extend({ required: true })
}
...
    ko.applyBindingsWithValidation(self.viewModel, $ctx[0]);

Проверка работает нормально для поля описания, привязанного к текстовой области; но это не работает для comboBox или datePicker.

Я проверил документацию, а также этот jsFiddle, но я не смог заставить его работать.

Любая помощь будет принята с благодарностью.

1 ответ

Решение

Похоже, проблема в том, что <span class="validationMessage" data-bind="validationMessage: dueDate"></span> не генерируется автоматически для тэгов knockout-kendo. Просто добавьте тег для элемента knockout-kendo, например:

<input data-bind="kendoComboBox: { 
                  data: myOptions, 
                  value:myOptionId,
                  dataTextField: 'MyOptionName', 
                  dataValueField: 'MyOptionId'}"/>
<span class="validationMessage" data-bind="validationMessage: value:myOptionId"></span>
<input data-bind="kendoDatePicker: {value: dueDate}"/>
<span class="validationMessage" data-bind="validationMessage: dueDate"></span>

Не забудьте поставить перед вашим видом модель:

ko.validation.configure({
    registerExtenders: true,
    messagesOnModified: true,
    insertMessages: true,
    parseInputAttributes: true,
    messageTemplate: null
});
ko.validation.registerExtenders();
Другие вопросы по тегам