knockout.js - 读取 Knockout.js 中未提交的输入进入处理程序

标签 knockout.js

我有一个使用 Knockout.js 的表单,其中可以输入值,然后单击按钮或按 Enter 键将值应用到当前虚拟机。

当我在按 Enter 之前单击输入字段的按钮或 Tab 时,一切正常,但如果我按 Enter 而不按 Tab 离开输入字段,我将读取过时的值(或者如果字段没有值,则没有值)但失去了焦点)。

        self.triggerApplyInputByEnter = function (data, event) {
            if (event.keyCode === 13) {
                self.ApplyInput();
                return false;
            }
            return true;
        }    

标记:

                 <table>
                   <tbody data-bind="foreach: Inputs">
                     <tr>
                         <td><input type="text" placeholder="Start" data-bind="value: InputStart, event: { keypress: $parent.triggerApplyInputByEnter }" /></td>
                         <td><input type="text" placeholder="End"  data-bind="value: InputEnd, event: { keypress: $parent.triggerApplyInputByEnter }" /></td>
                     </tr>
                   </tbody>
                </table>
              </td>
            <td>
               <a href="#" title="" data-bind="click: ApplyInput" ><span>Apply Input</span></a>
            </td>

我的直觉是,绑定(bind)到输入字段的可观察量在输入字段失去焦点之前不会更新。有关如何在按键处理程序中读取未提交的值或在按 Enter 时强制输入字段进行数据绑定(bind)的任何指导,或在按 Enter 时以任何其他方式读取最新值的指导?

更新:我发现使用“valueUpdate:'afterkeydown'”可以在每次按键时更新可观察值,如果输入大量数据,这似乎效率低下,但对于我的情况来说已经足够好了。

<td><input type="text" placeholder="Start" data-bind="value: InputStart, valueUpdate:'afterkeydown', event: { keypress: $parent.triggerApplyInputByEnter }" /></td>

最佳答案

textInput绑定(bind)是为实时跨浏览器更新而设计的。这将满足您的用例。

valueUpdate: 'afterkeydown'" 绑定(bind)可能在多种情况下失败,例如移动设备。

关于knockout.js - 读取 Knockout.js 中未提交的输入进入处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29951578/

相关文章:

internet-explorer-8 - KnockoutJS 与 IE8,Stringify 偶尔出现问题?

javascript - 选择列表不刷新

javascript - KnockoutJS if 语句有效性

javascript - 在 ko.observableArray 模型绑定(bind)问题中向下移动项目

javascript - Bootstrap 类 ="table"不起作用

knockout.js - 对 Breeze 导航属性进行排序

javascript - Knockout.js 在 foreach 绑定(bind)中使用循环变量

javascript - 输入时设置电话号码格式 (xxx) xxx - xxxx

javascript - 为什么不应用 CSS 过渡?

jquery - 在 Knockout 数据绑定(bind)文本中包含 span 元素