Knockout SubscribeChanged

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.1/knockout-min.js"></script>
<input type="text" data-bind="textInput: name" />

<hr />

<div data-bind="text: name">

</div>

JavaScript

var viewModel = {
	defaultName: "John",
	name: ko.observable("John")
};

viewModel.name.fn.subscribeChanged = function (callback) {
    var oldValue;
    this.subscribe(function (_oldValue) {
        oldValue = _oldValue;
    }, this, 'beforeChange');

    var subscription = this.subscribe(function (newValue) {
        callback(newValue, oldValue);
    });

    return subscription;
};

ko.applyBindings(viewModel, document.getElementById("body"));

viewModel.name.subscribeChanged(function (newValue, oldValue) {
	if (newValue.indexOf(viewModel.defaultName) !== 0) {
  	viewModel.name(oldValue);
  }
});