JSFiddle - React, Tailwind, and code Playground

by rniemeyer

HTML

<script src="http://cloud.github.com/downloads/SteveSanderson/knockout/knockout-2.0.0.debug.js"></script>
<div>
    <input type="text" data-bind="value: InputValue, enterKey: RunSomething" />
    <input type="button" value="test" data-bind="click: RunSomething" />
    <br/>
    <span data-bind="text: InputValue"></span>
</div>

JavaScript

ko.bindingHandlers.enterKey = {
    init: function(element, valueAccessor, allBindings, vm) {
        ko.utils.registerEventHandler(element, "keyup", function(event) {
            if (event.keyCode === 13) {
                ko.utils.triggerEvent(element, "change");
                valueAccessor().call(vm, vm); //set "this" to the data and also pass it as first arg, in case function has "this" bound
            }
            
            return true;
        });
    }         
};

var ViewModel = function() {
    var self = this;
    self.InputValue = ko.observable('');
    
    self.RunSomething = function(viewModel, event) {
        window.alert(viewModel.InputValue());
    }
}
    
ko.applyBindings(new ViewModel());