Ответ 1
нокаут-валидация в настоящее время не поддерживает "onlyIf" для анонимных правил. Но он поддерживается для пользовательских правил. Поэтому вы можете создать собственное правило и использовать onlyIf с этим:
ko.validation.rules['confirmPasswordMatches'] = {
validator: function (val, params) {
var otherValue = params;
return val === ko.validation.utils.getValue(otherValue);
},
message: 'Passwords do not match.',
};
ko.validation.registerExtenders();
function ViewModel() {
var self = this;
self.IsCredentialsRequired = ko.observable(true);
self.Password = ko.observable()
.extend({
required: {
message: "Password is required.",
params: true,
onlyIf: self.IsCredentialsRequired
}
});
self.ConfirmPassword = ko.observable().
extend({
confirmPasswordMatches: {
params: self.Password,
onlyIf: self.IsCredentialsRequired
}
});
}