Нокаут-кендо-виджеты с неработающей валидацией
Мне нужно реализовать проверку нокаута с помощью нокаут-кендо.
У меня есть этот 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();