使用事件监听器时敲除不绑定?

时间:2013-03-30 00:13:42

标签: knockout.js

我正在尝试使用“标签”按钮检测用户是否离开某个字段 - 如果是,我想保存数据。

在这种情况下,当通过选项卡退出最后一个字段时,会保存两个字段。如果我手动点击“保存”,两个字段都会正确更新。如果我使用TAB,则只保存第一个字段,旧字段不保存新数据。这告诉我,某种程度上“keydown”绑定没有看到新数据。

如果我在本地调试并将鼠标悬停在tabOut方法中的“data”上,我会看到第一个字段有新数据,但第二个字段有旧数据。

小提琴:http://jsfiddle.net/PTSkR/18/

任何帮助将不胜感激!

观点:

        <div class="span5 side-study-box">
            <textarea data-bind="value: sides()[0].content"></textarea>
        </div>
        <div class="span5 side-study-box">
            <textarea data-bind="value: sides()[1].content, event: { keydown: tabOut }"></textarea>
        </div>

tabOut功能:

self.tabOut = function (data, event) {

            if (event.keyCode == 9) {
                debugger;
                self.save();
            };
            return true;
        };

1 个答案:

答案 0 :(得分:2)

您是否尝试过将“valueUpdate:'afterkeydown'”绑定添加到文本框中?