Próbuję użyć dodatku sprawdzania poprawności Knockoutjs z GitHub. Większość z nich wydaje się działać dobrze, ale kiedy próbuję użyć rozszerzonej walidacji mustEqual (password/confirm password), nie wydaje się, aby cokolwiek zrobić. czego mi brakuje?Sprawdzanie poprawności Knockoutjs dla przykładów areSame lub mustMatch
Bardzo chciałbym nauczyć się tej techniki przedłużania do wykorzystania w przyszłości.
(również ta cała HTML i JavaScript są ładowane do strony poprzez AJAX rozmowy. Jeśli nie ma nic wspólnego z nim.)
Moje javascript
function UserAccount(data) {
var self = this;
self.Password = ko.observable(data.Password).extend({ required: true, minlength: 6, message: "Password is required", maxLength: 12 });
self.Firstname = ko.observable(data.Firstname).extend({ required: true, minlength: 6, message: "Firstname is required", maxLength: 40 });
self.Lastname = ko.observable(data.Lastname).extend({ required: true, minlength: 6, message: "Lastname is required", maxLength: 40 });
self.Email = ko.observable(data.Email).extend({ required: true, minlength: 6, message: "Email is required", email: true, maxLength: 90 });
self.ConfirmPassword = ko.observable().extend({ mustEqual: self.Password()});
...........................Other Code............
}
ko.validation.rules['mustEqual'] = {
validator: function (val, otherVal) {
alert("Hello");
return val === otherVal;
},
message: 'The field must equal {0}'
};
$(document).ready(function() {
ko.applyBindings(new UserAccount(initdata), $("#UserAccount").get(0));
ko.validation.registerExtenders();
});
To działało. Właściwie pracowałem z funkcją areSame, ale nie mogłem jej uruchomić. Przełączyłem się na mustEqual, ponieważ wyglądało to prościej. Jeśli ko.validation ... i ko.applyBindings zawsze znajdują się w $ (document) .ready? – DanScan
'ko.applyBindings' powinno zostać wywołane po załadowaniu twojego DOM, więc' $ (document) .ready' jest dobrym miejscem do umieszczenia go. 'Ko.validation.registerExtenders();' powinno być wywołane PO zdefiniowaniu WSZYSTKICH twoich niestandardowych weryfikatorów. Można go więc wywołać bezpośrednio po 'ko.validation.rules ['areSame'] = {}', więc nie trzeba wywoływać go w '$ (document) .ready'. – nemesv
Jak zatrzymać sprawdzanie poprawności przed uruchomieniem po załadowaniu strony? – DanScan