通过单击按钮启用文本区域,而不是同时打印它

时间:2017-10-19 20:07:10

标签: javascript html

所以我遇到了这个问题,并且无法想出一个我最喜欢使用的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()很好,但不适用于此任务,因为它可以防止印刷中的角色。

1 个答案:

答案 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>