Conditional validation not working for anonymous Knockout validation rule

knockout-validation, knockout.js

Solution

knockout-validation does currently not support 'onlyIf' for anonymous rules. But it is supported for custom rules. Therefore you can create a custom rule and use onlyIf with that:

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
        }
    });

}

Fiddle: http://jsfiddle.net/delixfe/mFAEx/

Problem

I have following attributes in my viewmodel which use knockout validation,one of them is custom validation to check password match. ``` model.Password = ko.observable() .extend({ required: { message: "Password is required.", params: true, onlyIf: function () { return model.IsCredentialsRequired(); }} }); model.ConfirmPassword = ko.observable(). extend({ validation: { validator: mustEqual, message: 'Passwords do not match.', params: model.Password, onlyIf: function () { return model.IsCredentialsRequired(); } } }); ``` code for custom validation function ``` var mustEqual = function (val, other) { return val == other(); }; ``` I found that `OnlyIf` condition is working fine for `model.Password` depending on `model.IsCredentialsRequired()` but its not working for `model.ConfirmPassword`,Can somebody help me why this is happening?Is there any another way by which i can use conditional validation for custom rules? Thanks in advance

Original source