JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div>
<input type="text" data-bind="number_value: num, valueUpdate:'keyup'">
<span data-bind="text: num"></span>
</div>
JavaScript
ko.bindingHandlers.number_value = {
init: function(element, valueAccessor,allBindingsAccessor, viewModel, bindingContext){
ko.bindingHandlers.value.init(element, valueAccessor,allBindingsAccessor, viewModel, bindingContext);
},
update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var value = ko.utils.unwrapObservable(valueAccessor());
var formatted = value.toString();
formatted = formatted.replace(/[^0-9]/g, '');
valueAccessor(formatted);
return element.value= formatted;
}
};
function vm() {
this.num = ko.observable(0);
this.num.subscribe(function(n) {
console.log(n);
})
}
ko.applyBindings(new vm())