我正在使用durandal /微風與Knockout。validationOptions不能與自定義bindingHandlers一起使用
我正在驗證我的輸入與ko.validation
。
下面是一個經典:
<input type="text" data-bind="value: myDate, validationOptions: { errorElementClass: 'input-validation-error'}" />
.input-validation-error {
background-color: #c75b55 !important;
}
這一個非常有效:當驗證失敗時,輸入文本框標記爲紅色。
現在我想用一個bindingHandlers代替「簡單」 value
結合:
<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
運作良好
var validationErrorsCount = ko.computed(function() {
if (typeof itinerary() == 'undefined') return;
var validationErrors = ko.validation.group(itinerary());
return validationErrors().length;
});
但輸入文本框不再標記爲紅色。看來'validationOptions'只能與值綁定一起使用。
任何方式來讓我的驗證工作?
謝謝。
你確定你沒有拼寫錯?我得到錯誤'對象#
它是一個非常新的api功能,你使用的最新版本從https://github.com/Knockout-Contrib/Knockout-Validation – Anders 2013-04-29 10:39:00
看到編輯請 – Anders 2013-04-29 10:41:57