所以我遇到了这个问题,并且无法想出一个我最喜欢使用的vanilla js的解决方案(没有jQuery)。
我有一个textarea,它最初被禁用,并且可以通过按钮按下启用(假设按钮i)。因此,当我按下“i”按钮时,它会启用textarea,但它也会打印出来,我不想发生这种情况。
document.addEventListener('keydown', (event) => {
if (event.keyCode == 73) {
document.getElementById('focus').disabled = false;
document.getElementById('focus').focus();
}
});
所以基本上我的问题是如何在一个按钮上启用它而不打印它,但在启用后打印它(例如第二次推送)preventDefault()很好,但不适用于此任务,因为它可以防止印刷中的角色。
答案 0 :(得分:3)
使用Event.preventDefault()
阻止该字母出现在文本区域中。但是,如果您希望用户能够键入字母i,则必须在之后中和事件侦听器。
const focus = document.getElementById('focus');
document.addEventListener('keydown', function eventListener(event) {
if (event.keyCode !== 73) {
return;
}
focus.disabled = false;
focus.focus();
event.preventDefault(); // prevent the default behavior
document.removeEventListener('keydown', eventListener); // remove the event listener
});
<textarea id="focus" disabled></textarea>