Edit in JSFiddle

ko.bindingHandlers.executeOnEnter = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        var allBindings = allBindingsAccessor();
        $(element).keypress(function (event) {
            var keyCode = (event.which ? event.which : event.keyCode);
            if (keyCode === 13) {
                allBindings.executeOnEnter.call(viewModel);
                return false;
            }
            return true;
        });
    }
};

$(function() {
    var viewModel = {
        // data
        items: ko.observableArray([]),
        itemToAdd: ko.observable(""),

        // behaviors
        addItem: function() {
            this.items.push({ name: this.itemToAdd() });
            this.itemToAdd("");
        }        
    };
    ko.applyBindings(viewModel);
});
<input type="text" data-bind="value: itemToAdd, valueUpdate: 'afterkeydown', executeOnEnter: addItem" />
<button data-bind="click: addItem">Add</button>
<ul>
    <!-- ko foreach: items -->
    <li><span data-bind="text: name"/></li>
    <!-- /ko -->
</ul>