validationOptions不能与自定义bindingHandlers一起使用 [英] validationOptions not working with custom bindingHandlers
问题描述
我正在使用杜兰度/微风搭配淘汰赛.
I'm using durandal/breeze with Knockout.
我正在使用ko.validation
对输入进行验证.
I am working on validation on my inputs with ko.validation
.
这是经典之作:
<input type="text" data-bind="value: myDate, validationOptions: { errorElementClass: 'input-validation-error'}" />
.input-validation-error {
background-color: #c75b55 !important;
}
这很好用:当验证失败时,输入文本框将标记为红色.
This one works pretty well: when validation failed, the input textbox is marked in red.
现在,我想使用bindingHandlers代替简单的" value
绑定:
Now I would like to use a bindingHandlers in place of a 'simple' value
binding:
<input type="text" data-bind="dateRW: myDate, validationOptions: { errorElementClass: 'input-validation-error'}" />
ko.bindingHandlers.dateRW = {
//dateRW --> the 'read-write' version used both for displaying & updating dates
init: function (element, valueAccessor, allBindingsAccessor) {
var observable = valueAccessor();
//handle the field changing
ko.utils.registerEventHandler(element, "change", function () {
var value = $(element).val();
var dateFormatted = moment.utc(value, "DD/MM/YYYY");
//if (dateFormatted.isValid())
if (dateFormatted)
observable(dateFormatted.toDate())
else
observable(null);
});
},
update: function (element, valueAccessor, allBindingsAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
var date = (typeof value !== 'undefined') ? moment.utc(value) : null;
var dateFormatted = (date != null) ? date.format('DD/MM/YYYY') : '';
$(element).val(dateFormatted);
}
};
通过此实施,验证有效,我的意思是ko.validation.group
运行良好
With this implementation, validation works, I mean ko.validation.group
is working well
var validationErrorsCount = ko.computed(function() {
if (typeof itinerary() == 'undefined') return;
var validationErrors = ko.validation.group(itinerary());
return validationErrors().length;
});
但是输入文本框不再标记为红色.看来"validationOptions"仅适用于值绑定.
But the input textbox is no more marked in red. It seems that 'validationOptions' only work with the value binding.
有什么方法可以验证我的工作吗?
Any way to have my validation work?
谢谢.
推荐答案
验证框架具有用于值绑定的钩子,您需要调用
The validation framework have hooks for the value binding, you need to call
ko.validation.makeBindingHandlerValidatable("dateRW");
edit:其未定义 https://jsfiddle.net/it3xl/n7aqjor9/
edit: its not undefined https://jsfiddle.net/it3xl/n7aqjor9/
这篇关于validationOptions不能与自定义bindingHandlers一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!