Sto usando durandal/breeze con Knockout.validationOptions non funziona con bindingHandlers personalizzato
Sto lavorando alla convalida sui miei ingressi con ko.validation
.
Ecco un classico:
<input type="text" data-bind="value: myDate, validationOptions: { errorElementClass: 'input-validation-error'}" />
.input-validation-error {
background-color: #c75b55 !important;
}
Questo funziona piuttosto bene: quando la convalida non è riuscita, la casella di testo in ingresso è segnato in rosso.
Ora vorrei usare un bindingHandlers al posto di un 'semplice' value
vincolante:
<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);
}
};
Con questa implementazione, validazione funziona, voglio dire ko.validation.group
sta lavorando bene
var validationErrorsCount = ko.computed(function() {
if (typeof itinerary() == 'undefined') return;
var validationErrors = ko.validation.group(itinerary());
return validationErrors().length;
});
Ma la casella di testo di input non è più contrassegnata in rosso. Sembra che "validationOptions" funzioni solo con il valore binding.
Un modo per far funzionare la mia convalida?
Grazie.
Sei sicuro di non aver sbagliato l'ortografia? Ho ricevuto l'errore 'L'oggetto #