javascript - 通过单击按钮启用文本区域但同时不打印它

标签 javascript html

所以我遇到了这个问题,但无法用我最喜欢使用的普通js(无jQuery)提出解决方案。

我有一个文本区域,最初被禁用,可以通过按下按钮(假设按钮 i)来启用。因此,当我按下按钮“i”时,它会启用文本区域,但它也会将其打印出来,这是我不希望发生的情况。

document.addEventListener('keydown', (event) => {
    if (event.keyCode == 73) {
        document.getElementById('focus').disabled = false;
        document.getElementById('focus').focus();
    } 
});

所以基本上我的问题是如何在一键按下时启用它并且不打印它,而是在启用它后打印它,(例如第二次按下)preventDefault() 很好,但不适用于此任务,因为它会阻止根本无法打印字符。

最佳答案

使用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>

关于javascript - 通过单击按钮启用文本区域但同时不打印它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46838108/

相关文章:

javascript - 在新标签页中打开 : how is 'Bing' doing this? (IE9)

javascript - 为什么我的捕获括号之外的字符包含在我的正则表达式的匹配中?

javascript - 在隐藏预加载器之前加载所有 Assets

html - thymeleaf <img> 里面 <div th :text>

javascript - 如何在 MVC4 中使用 Razor View 在表中动态行?

javascript - 如何从 javascript 函数返回/传递值?

javascript - 显示不同视频客户端宽度的控制台

html - 如何将三张图片与相应的文字对齐,使它们从左到右交替出现?

javascript - 使用 mongoose 4.11.0 进行分组查询

javascript - 如何使用 Javascript 判断 HTML 属性是否存在