我有一个HTML输入字段,但是如果用户一直按一个键,它会不停地添加相同的字母。我想抑制这种行为。
如何重写输入组件的输入事件监听器,以不允许在按下键时不添加连续字符?
<input type="text" oninput="this.value = this.value.replace(/(.)1+/g, '$1')" />
https://jsfiddle.net/sxwr2u3z/
又是一个答案。本例使用KeyboardEvent.repeat
检测连续按压。
const input = document.querySelector('input');
input.addEventListener('input', function (event) {
this.value = this.value.replace(/.$/,'');
});
input.addEventListener('keyup', function (event) {
if (event.repeat) return;
this.value += event.key;
});