【问题标题】:Prevent default writting letter防止默认写信
【发布时间】:2020-11-11 16:52:57
【问题描述】:

我想添加功能,当我点击“L”时发生了一些事情,但是 L 不会被写入。

映射函数到 L 字母工作正常,但即使我添加了阻止默认函数,当我在其中设置光标时,L 字母总是被写入文本区域。请问这个可以解决吗?

<html>

<body>
<textarea id="a">Test</textarea>
<textarea id="ab"></textarea>

<script>
function send(e) {
            if (e.keyCode == 76) {
                e.preventDefault();
                ab.value += a.value;
                a.value = "";
            }
        }
        document.addEventListener('keyup', send);
        
</script>
</body>

</html>

【问题讨论】:

    标签: javascript preventdefault keyup


    【解决方案1】:

    一旦keypress 事件完成,将插入按下的键。 keyup 侦听器将在插入密钥后运行,因此在事件上调用 preventDefault 不会阻止密钥出现。

    改为添加 keypress 侦听器。

    function send(e) {
      if (e.keyCode == 76) {
        e.preventDefault();
        ab.value += a.value;
        a.value = "";
      }
    }
    document.addEventListener('keypress', send);
    <textarea id="a">Test</textarea>
    <textarea id="ab"></textarea>

    【讨论】: