防止在文本区域中按住键盘
Prevent holding keyboard pressed in textarea
我需要用户将文本插入文本区域,每次按键一个字母,因此如果按住一个键,它将只写一个字母 ('a') 而不是多个字母 ('aaaaaaaaaaaaaaaaaaa').要输入最后一个字符串,用户必须多次按下释放键盘按钮。
这可能吗?
Javascript和JQuery都可以使用。
谢谢!
警告:我强烈建议不要这样做,尤其是因为使用辅助技术的用户可能会产生意想不到的后果。
您可以观看 keypress
和 keyup
并禁止进一步的 keypress
事件,直到您看到 keyup
。请注意,这不会阻止他们按住某个键并切换某些 other 键(例如 Shift 或 Ctrl), 但它确实需要他们切换 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>
我并不是说它万无一失,或者是个好主意...:-)
我需要用户将文本插入文本区域,每次按键一个字母,因此如果按住一个键,它将只写一个字母 ('a') 而不是多个字母 ('aaaaaaaaaaaaaaaaaaa').要输入最后一个字符串,用户必须多次按下释放键盘按钮。
这可能吗?
Javascript和JQuery都可以使用。
谢谢!
警告:我强烈建议不要这样做,尤其是因为使用辅助技术的用户可能会产生意想不到的后果。
您可以观看 keypress
和 keyup
并禁止进一步的 keypress
事件,直到您看到 keyup
。请注意,这不会阻止他们按住某个键并切换某些 other 键(例如 Shift 或 Ctrl), 但它确实需要他们切换 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>
我并不是说它万无一失,或者是个好主意...:-)