如何在React.js中正确捕获文本输入的change / focusOut事件?


77

我有一个表单,我想在其中处理文本输入的更改事件,但是React onChange按下键时触发(与本机JS相反,当输入字段失焦时会触发更改事件)。

React方式来做我想要的吗?

Answers:


149

如果只想在输入失去焦点时触发验证,则可以使用onBlur

琐事:React <17监听blur事件,而> = 17监听focusout事件。


2
非常感谢。那就是我所需要的。我只是无法在React中找到有关“ focusOut”的信息
Alex Suslyakov

那么我们就不能在填充了react的输入中使用值
Thilina Sampath

不知道您的意思是@ThilinaSampath
多米尼克

1
目前尚不清楚您在说什么,在受控输入的情况下,您不会使用onBlur事件为state分配值,而是会使用onChange,否则在您键入时不会有任何变化。这是为了触发验证而不为输入分配值:/
Dominic

1
是的,您将使用onChange来更新存储中的值,此问题与验证有关。没有什么可以阻止您同时使用这两个事件。
多米尼克

6

太晚了,但值得您注意,在浏览器级别上,focusin和focusout事件的实现存在一些差异,并且会对合成onFocus和onBlur做出反应。focusin和focusout实际上会冒泡,而onFocus和onBlur不会。因此,到目前为止,对于reactin和focusout还没有完全相同的实现。无论如何,大多数情况将在onFocus和onBlur中涵盖。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.