You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在执行打字效果时禁用Enter键事件监听器并恢复?

解决打字效果执行期间禁用Enter重复触发的问题

方案一:用状态变量控制(推荐)

不用移除事件监听器,通过状态变量标记当前是否正在执行打字效果,触发前先检查状态即可:

// 初始化状态:未在执行打字效果
let isTyping = false;

// 将事件处理函数定义为命名函数,便于维护
function handleEnterKeyup(event) {
    if (event.key === 'Enter') {
        // 如果正在打字,直接跳过
        if (isTyping) return;
        
        // 标记为正在执行打字效果
        isTyping = true;
        getResult(document.getElementById("input").value);
    }
}

document.addEventListener("keyup", handleEnterKeyup);

// 重要:在打字效果完全结束后,需要把状态重置为false
// 比如在getResult函数内的打字动画完成回调里添加:
// isTyping = false;

方案二:移除/重新绑定事件监听器

如果坚持要用移除监听器的方式,必须把事件处理函数定义为命名函数(匿名函数无法被removeEventListener识别):

function handleEnterKeyup(event) {
    if (event.key === 'Enter') {
        // 移除监听器,防止重复触发
        document.removeEventListener("keyup", handleEnterKeyup);
        getResult(document.getElementById("input").value);
    }
}

document.addEventListener("keyup", handleEnterKeyup);

// 同样,在打字效果完成后,重新绑定监听器
// 比如在getResult的打字动画结束逻辑里添加:
// document.addEventListener("keyup", handleEnterKeyup);

核心注意点

两种方案的本质都是打字开始时锁定触发入口,结束后解锁。你需要找到打字效果完成的时机(比如动画回调、定时器结束处),在该节点执行状态重置或监听器重新绑定操作。

内容的提问来源于stack exchange,提问作者Filip Mráz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:53:13