【问题标题】:How to call the knockout.js event from the keyDown event如何从 keyDown 事件中调用 knockout.js 事件
【发布时间】:2018-06-20 10:04:13
【问题描述】:

我想从keyDown事件中执行knockoutjs绑定的事件。

HTML

<button id="copyButton" data-bind="click: clipboardModel.copy">copy</button>

jQuery

$('#someElement').on('keydown', function(e) {
    switch (e.keyCode) {
        case 67: // c
            if (!(e.ctrlKey || e.metaKey)) break;
            $('#copyButton').click();
            break;
    }
});

它适用于此,但似乎不是正确的方式。

【问题讨论】:

  • 只是一个细节,但如果你只有一个案例,为什么要“切换案例”?我希望您只复制了部分开关盒以简化问题
  • @paulo.bing 实际代码中有更多条件。我已经得到了接近问题句的答案,所以我认为最好不要简化它。怎么样?

标签: javascript jquery knockout.js keydown keyevent


【解决方案1】:

你可以bind to the event directly:

<input id="someElement" data-bind="event: { keydown: clipboardModel.copyKeydown }" />

虽然这确实意味着您需要将您的 keyCode 支票放入剔除功能中:

var clipboardModel = {
    copyKeydown: function(data, e) {
        switch (e.keyCode) {
            case 67: // c
                if (!(e.ctrlKey || e.metaKey)) break;
                clipboardModel.copy();
                break;
        }
    },
    copy: function() { /*...*/ }
}

我在这里对您的视图模型做了一些假设,您可能需要稍微调整一下。

【讨论】:

  • 感谢您的回答。这很简单。我会试一试的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
相关资源
最近更新 更多