处理IE 9和10的清除按钮与敲除结合(Handle IE 9 & 10's clear b

2019-09-02 03:41发布

我有一个绑定到一个输入文本框淘汰赛JS观察到。

<input id="searchTextBox" class="searchTextBox" type="text" maxlength="25"
       title="Search" placeholder="Search"
       data-bind="value: GridVm.FilterText,
       valueUpdate: 'afterkeydown',
       disable: GridVm.Data().length == 0" />

的问题是,当用户点击在x在IE中可观察到的FilterText不更新。

我发现我可以删除X (见链接的问题截屏),但是这是一个不得已的(我喜欢的功能)。 本次论坛说,没有被点击的X时触发的事件 。

是否有一个事件,我可以使用强制淘汰赛观察的更新或一个很好的方式在淘汰赛做到这一点?

Answer 1:

如果你只需要改变

valueUpdate: 'afterkeydown'

valueUpdate: 'input'

它挂钩该事件触发值更新。 这是更好的整体,因为它也处理基于剪贴板,动作和文字拖放操作。



Answer 2:

我想通了使用输入事件和淘汰赛的事件绑定 。 这里是展示的解决方案我的jsfiddle与下面的代码。

<input type="search" id="input1" data-bind="value: textForBox, valueUpdate: 'afterkeydown',
  event: { input: cleared }" />
var vm = {
    textForBox: ko.observable(),
    cleared: function (data, event) {
        if (event.currentTarget.value === '') {
           this.textForBox('');
        }
    }
};
ko.applyBindings(vm);


文章来源: Handle IE 9 & 10's clear button with Knockout binding