我在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);
但焦点永远不会被设置 - 如果我从目标元素单击到另一个元素,焦点永远不会返回到目标元素。
为什么没有将焦点设置回目标元素?
答案 0 :(得分:1)
您是否尝试过使用e.currentTarget和这样的超时?
e.preventDefault();
const target = e.currentTarget;
setTimeout(
function () {
target.focus();
},
5
);
答案 1 :(得分:0)
为什么没有将焦点设置回目标元素?
使用setTimeout
,以便blur
再次focus
之前完成