使用onBlur在React组件中设置焦点

时间:2017-10-26 09:19:56

标签: reactjs typescript event-handling onblur onfocus

我在React组件中附加了一个onBlur事件处理程序,其中逻辑将焦点设置回目标元素(并在TypeScript中写入)。

emailBlur(e: React.FocusEvent<HTMLInputElement>) {
    e.currentTarget.focus();
    e.preventDefault();
    // re-ordering these statements makes no difference
}

这是绑定的

<input type="email" onBlur={this.emailBlur} />

此外,构造函数包含

this.emailBlur = this.emailBlur.bind(this);

但焦点永远不会被设置 - 如果我从目标元素单击到另一个元素,焦点永远不会返回到目标元素。

为什么没有将焦点设置回目标元素?

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用e.currentTarget和这样的超时?

e.preventDefault();
const target = e.currentTarget;
setTimeout(
    function () {
        target.focus();
    },
    5
);

答案 1 :(得分:0)

  

为什么没有将焦点设置回目标元素?

使用setTimeout,以便blur再次focus之前完成