HTML代码
<input type="text" data-bind="value: nextName">
可观察
nextName: KnockoutComputed<string>;
currentName: KnockoutObservable<string>;
constructor()
{
this.nextName = ko.pureComputed(
{
read: () => this.currentName(),
write: (value: string) =>
{
this.currentName(value);
if ((value) && value.trim().length > 0)
this.runSearch();
}
}, this);
}
用户按回车键后,搜索功能将在Chrome中正常执行,但不会在Internet Explorer中执行
我尝试使用valueUpdate:'afterkeydown'
绑定,但这将在每个字符后执行搜索 - 这不是我想要实现的。
答案 0 :(得分:1)
我使用了这种polyfill-根本问题是,按下Platform.runLater
键时IE不会触发change
事件。
Enter
答案 1 :(得分:0)
您可以使用textInput
绑定并为custom Knockout binding
创建enterkey
来执行您想要的操作:
textInput
提供viewmodel
之间的双向更新1}} property和元素的值.it为autocomplete
,drag-and-drop
和clipboard
事件提供实例更新。然后你可以使用enterkey
绑定来在每次用户按下回车键时调用你的函数,这也应该在IE中工作。
<input type="text" data-bind="textInput: nextName,enterkey: function() {runSearch()}">
自定义Knockout绑定:
ko.bindingHandlers.enterkey = {
init: function (element, valueAccessor, allBindings, viewModel) {
var callback = valueAccessor();
$(element).keypress(function (event) {
var keyCode = (event.which ? event.which : event.keyCode);
if (keyCode === 13) {
callback.call(viewModel);
return false;
}
return true;
});
}
};