8

当用户通过 MacBook Touch Bar 输入输入时,是否有任何事件触发元素?form

这是一个简单的例子

<textarea id="textarea"></textarea>

(function($) {
  $('#textarea')
    .on('keyup', function() {
      console.log('keyup');
    })
    .on('keydown', function() {
      console.log('keydown');
    })
    .on('keypress', function() {
      console.log('keypress')
    });
})(jQuery);

在 Safari 上,当我使用触控栏“键入”时(​​例如,点击表情符号或自动建议的文本),我在网络检查器控制台中看不到任何事件。但是,常规键盘会按预期触发keydownkeypresskeyup事件。

4

1 回答 1

6

触摸栏似乎不会触发按键事件。

另一种方法是收听input事件

正如相关MDN 文档所述,只要值发生更改,就会触发该事件,这意味着它会在触摸栏更改input/textarea值时起作用。

<input>当一个or<textarea>元素的值改变时,DOM 输入事件被同步触发。

用法:

document.querySelector('textarea').addEventListener('input', function (event) {
    // ...
});

或者...

$('textarea').on('input', function (event) {
  // ...
});
于 2017-02-20T22:50:01.690 回答