$(function() { var viewModel = { // data items: ko.observableArray([]), itemToAdd: ko.observable(""), // behaviors addItem: function() { this.items.push({ name: this.itemToAdd() }); this.itemToAdd(""); }, addOnEnter: function(data, event) { var keyCode = (event.which ? event.which : event.keyCode); if (keyCode === 13) { this.addItem(); return false; } return true; } }; ko.applyBindings(viewModel); });
<input type="text" data-bind="value: itemToAdd, valueUpdate: 'afterkeydown', event: { keypress: addOnEnter }" /> <button data-bind="click: addItem">Add</button> <ul> <!-- ko foreach: items --> <li><span data-bind="text: name"/></li> <!-- /ko --> </ul>