Knockout.js validationOptions不使用自定义BindingHandler

Knockout.js validationOptions不使用自定义BindingHandler,knockout.js,breeze,Knockout.js,Breeze,我正在使用durandal/breeze和Knockout 我正在使用ko.validation对输入进行验证 这里有一个经典: <input type="text" data-bind="value: myDate, validationOptions: { errorElementClass: 'input-validation-error'}" /> .input-validation-error { background-color: #c75b55 !import

我正在使用durandal/breeze和Knockout

我正在使用
ko.validation
对输入进行验证

这里有一个经典:

<input type="text" data-bind="value: myDate, validationOptions: { errorElementClass: 'input-validation-error'}" />

.input-validation-error {
    background-color: #c75b55 !important;
}
通过这个实现,验证工作正常,我的意思是
ko.validation.group
工作正常

var validationErrorsCount = ko.computed(function() {
    if (typeof itinerary() == 'undefined') return;
    var validationErrors = ko.validation.group(itinerary());
    return validationErrors().length;
});
但是输入文本框不再用红色标记。“validationOptions”似乎只适用于值绑定

有没有办法让我做验证工作


谢谢。

验证框架有用于值绑定的挂钩,您需要调用

ko.validation.makeBindingHandlerValidatable("dateRW");
编辑:它不是未定义的

查看它调用的
knockout validation.js
源代码:

makeBindingHandlerValidable('value')
使
绑定自动可验证

您可以尝试添加对
MakeBindingHandlerValidable
的调用以注册处理程序:

ko.bindingHandlers.dateRW = {
    //dateRW --> the 'read-write' version used both for displaying & updating dates
    init: function (element, valueAccessor, allBindingsAccessor) {
       ...
    },
    update: function (element, valueAccessor, allBindingsAccessor) {
       ...
    }
};

ko.validation.makeBindingHandlerValidatable('dataRW');
与空元素绑定。 我不想让文本框标记为红色。
有时,允许在validationMessage绑定中使用额外的空标记(span)

<input data-bind="datepickerCustom: myDate"/>
<span data-bind="validationMessage: myDate" class="validationMessage"></span>


您确定没有拼写错误吗?我得到了错误
对象#没有方法'MakeBindingHandlerValidable'
。不管怎样,谢谢。这是一个非常新的api函数,你们使用的是来自的最新版本吗?非常感谢你们两位。安德斯,我在你们的消息中跳过了我的小提琴。很抱歉如果你有时间,改正你的时间,然后把它带回来。
<input data-bind="datepickerCustom: myDate"/>
<span data-bind="validationMessage: myDate" class="validationMessage"></span>