How to remove extender from an existing observable?

Jonas Stawski picture Jonas Stawski · Jun 15, 2013 · Viewed 7.5k times · Source

I am using the Knockout Validation plugin and setting an observable as required using the extender:

myObservable.extend({required:true});

Is it possible for me to remove the extender after adding it?

Answer

nemesv picture nemesv · Jun 15, 2013

You can remove all the validation relates properties form an observable which were added by the ko validation with calling:

myObservable.extend({validatable: false});

Or if you want to only remove the required validation you can remove it from the rules collection:

myObservable.rules.remove(function (item) {
        return item.rule == "required";
    });
}

Demo JSFiddle.

But the ko validation has support for conditional validation, so you can specify some condition when the validation should work so maybe this is what you need:

myObservable.extend({
    required: {
        message: "Some message",
        onlyIf: function () { return //some condition; }
    }
});