JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://knockoutjs.com/downloads/knockout-3.0.0.js"></script>
<textarea data-bind="value: comment, valueUpdate: 'afterkeydown', limitCharacters: 20"></textarea>
<br/>
<br/>
<span data-bind="text: count"></span> characters

JavaScript

ko.bindingHandlers.limitCharacters = {
    update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        var allowedNumberOfCharacters = valueAccessor();
        var currentValue = allBindingsAccessor.get('value');
        var cutText = ko.unwrap(currentValue).substr(0, allowedNumberOfCharacters);
        currentValue(cutText);
    }
};

var viewModel = {
    comment: ko.observable(""),
};
viewModel.count = ko.computed(function () {
    var countNum = 20 - viewModel.comment().length;
    return countNum;
});
ko.applyBindings(viewModel);