Default valueUpdate='afterkeydown' for Knockout 3.x
HTML
<script src="http://knockoutjs.com/downloads/knockout-3.0.0rc.js"></script>
<input data-bind="value: item"/>
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
JavaScript
//automatically add valueUpdate="afterkeydown" on every value binding
(function () {
var getInjectValueUpdate = function (allBindings) {
return {
has: function(bindingKey) {
return (bindingKey == 'valueUpdate') || allBindings.has(bindingKey);
},
get: function(bindingKey) {
var binding = allBindings.get(bindingKey);
if (bindingKey == 'valueUpdate') {
binding = binding ? [].concat(binding, 'afterkeydown') : 'afterkeydown';
}
return binding;
}
};
};
var valueInitHandler = ko.bindingHandlers.value.init;
ko.bindingHandlers.value.init = function (element, valueAccessor, allBindings, viewModel, bindingContext) {
return valueInitHandler(element, valueAccessor, getInjectValueUpdate(allBindings), viewModel, bindingContext);
};
}());
ko.applyBindings({
item: ko.observable()
});