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

React中按下Enter键后如何使输入框失焦?

问题:React输入框按下Enter后如何失焦并禁止编辑?

我有一个简单的React输入框,按下Enter键时会触发操作(后续将执行网络请求,目前仅打印状态)。输入框代码如下:

<input onKeyDown={handleEnterPress} />

对应的onKeyDown事件函数已能成功触发,代码如下:

const handleEnterPress = (e: React.KeyboardEvent<HTMLInputElement>) => {
    if (e.code === "Enter") {
        console.log(state);
    }
}

但目前按下Enter键后,输入框仍处于聚焦状态。我希望此时输入框失焦,标记操作已完成,不再允许编辑,请问最有效高效的实现方法是什么?

解决方案

方法1:直接调用blur()并禁用输入框(最简方案)

在handleEnterPress函数中,检测到Enter键触发时,直接通过事件对象获取输入框元素,调用blur()失焦,同时设置disabled属性禁止后续编辑:

const handleEnterPress = (e: React.KeyboardEvent<HTMLInputElement>) => {
    if (e.code === "Enter") {
        console.log(state);
        // 让输入框失焦
        e.currentTarget.blur();
        // 禁用输入框,阻止后续编辑
        e.currentTarget.disabled = true;
    }
}

这种方式无需额外状态或ref,代码简洁高效,适合简单场景。

方法2:用React状态管理(可扩展方案)

如果需要后续重新启用输入框等灵活操作,建议用状态控制输入框的禁用状态,结合ref来控制聚焦:

import { useRef, useState } from 'react';

const YourComponent = () => {
    const [isInputDisabled, setIsInputDisabled] = useState(false);
    const inputRef = useRef<HTMLInputElement>(null);

    const handleEnterPress = (e: React.KeyboardEvent<HTMLInputElement>) => {
        if (e.code === "Enter") {
            console.log(state);
            // 标记输入框为禁用状态
            setIsInputDisabled(true);
            // 通过ref让输入框失焦
            inputRef.current?.blur();
        }
    };

    return (
        <input
            ref={inputRef}
            onKeyDown={handleEnterPress}
            disabled={isInputDisabled}
        />
    );
};

这种方式符合React单向数据流原则,便于后续扩展逻辑(比如添加按钮重置isInputDisabled状态重新编辑)。

方法3:阻止默认行为(针对表单场景)

如果输入框嵌套在<form>标签内,按下Enter会触发表单默认提交行为,可添加e.preventDefault()阻止页面刷新:

const handleEnterPress = (e: React.KeyboardEvent<HTMLInputElement>) => {
    if (e.code === "Enter") {
        e.preventDefault(); // 阻止表单默认提交
        console.log(state);
        e.currentTarget.blur();
        e.currentTarget.disabled = true;
    }
}

内容的提问来源于stack exchange,提问作者Jon Nicholson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:37:43