防止在文本区域中按住键盘

Prevent holding keyboard pressed in textarea

我需要用户将文本插入文本区域,每次按键一个字母,因此如果按住一个键,它将只写一个字母 ('a') 而不是多个字母 ('aaaaaaaaaaaaaaaaaaa').要输入最后一个字符串,用户必须多次按下释放键盘按钮。

这可能吗?

Javascript和JQuery都可以使用。

谢谢!

警告:我强烈建议不要这样做,尤其是因为使用辅助技术的用户可能会产生意想不到的后果。

您可以观看 keypresskeyup 并禁止进一步的 keypress 事件,直到您看到 keyup。请注意,这不会阻止他们按住某个键并切换某些 other 键(例如 ShiftCtrl), 但它确实需要他们切换 some key:

var preventKeypress = false;
$("textarea")
  .on("keyup", function() {
    // Allow keypresses again
    preventKeypress = false;
  })
  .on("keypress", function(e) {
    if (preventKeypress) {
      // Disallow it
      e.preventDefault();
    } else {
      // Allow it, but then disallow until we next see keyup
      preventKeypress = true;
    }
  });
<textarea rows="5" cols="50"></textarea>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我并不是说它万无一失,或者是个好主意...:-)