Macbook触控栏的表单输入事件

Rob*_*hen 5 javascript jquery macbookpro-touch-bar

当用户通过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);
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*ier 6

看起来触摸条不会触发按键事件。

另一种方法是监听input事件

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

<input><textarea>元素的值发生更改时,DOM 输入事件会同步触发。

用法:

document.querySelector('textarea').addEventListener('input', function (event) {
    // ...
});
Run Code Online (Sandbox Code Playgroud)

或者...

$('textarea').on('input', function (event) {
  // ...
});
Run Code Online (Sandbox Code Playgroud)