当前位置: 首页 > 知识库问答 >
问题:

如何正确捕捉React.js?中文本输入的更改/焦点输出事件

司马渝
2023-03-14

我有一个表单,在这个表单中,我希望处理文本输入上的更改事件,但在按下键触发更改时做出反应(与本机JS相反,当输入字段失去焦点时触发更改事件)。

有没有反应的方法来做我想做的?

共有3个答案

慕容品
2023-03-14

您需要小心,因为onBlur在IE11中有一些警告(如何在IE中使用relatedTarget(或等效物)?,https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/relatedTarget).

然而,据我所知,没有办法在React中使用onFocusOut。查看他们的github上的问题https://github.com/facebook/react/issues/6410 如果你需要更多的信息。(请参阅下面的更新)

更新:

从React 17开始,事件已经更新——请参阅公共关系,了解onFocus/onBlur的焦点/焦点。然而,由于页面列表中断更改提到:

尽管在onFocus事件中,React 17在发动机罩下从焦点切换到焦点,但请注意,这并未影响起泡行为。在React中,onFocus事件总是冒泡,并且在React 17中继续冒泡,因为通常它是一个更有用的默认值。请参阅此沙箱,了解您可以为不同的特定用例添加的不同检查。

宇文卓
2023-03-14

虽然已经很晚了,但还是值得您花时间。不过,focusin和focusout事件的浏览器级实现以及react合成onFocus和onBlur存在一些差异。focusin和focusout实际上是气泡,而onFocus和onBlur则不是。因此,到目前为止,对于react,focusin和focusout没有完全相同的实现。无论如何,onFocus和onBlur将介绍大多数情况。

鲜于凯歌
2023-03-14

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

React使用onFocus和onBlur,而不是onFocusIn和onFocusOut。所有React事件都规范化为气泡,因此React不需要/不支持onFocusIn和onFocusOut。2.

 类似资料:
  • 我正在使用Office Fabric UI React组件,如果用户输入逗号字符,我希望将文本输入切换为多行文本。我可以让这部分工作,但是当输入在单行和多行输入之间切换时,它会失去焦点。因此,如果在文本字段中键入并键入逗号字符,文本字段将失去焦点。我相信,当我在两者之间切换时,office fabric react中的textfield组件会重新呈现一个textarea来代替输入,而焦点将保留在替

  • 问题内容: 我有文字输入。当输入获得焦点时,我想选择输入内的文本。 使用jQuery,我可以这样: 我四处搜寻以尝试找到Angular方式,但是我发现的大多数示例都在处理一个指令,该指令正在监视模式属性的更改。我假设我需要一个指令来监视接收焦点的输入。我该怎么办? 问题答案: 在Angular中执行此操作的方法是创建一个自定义指令,该指令会为您自动选择。 应用如下指令: Update1 :删除了j

  • 问题内容: 有谁知道如何更改Bootstrap的?单击字段时出现的蓝色发光? 问题答案: 最后,我在bootstrap.css中更改了以下css条目

  • 我试图在我的项目中做一些设置。我在将文本文件中的值输入JFrame时遇到问题。更具体地说,我有一个JFrame。从这个JFrame中,我打开另一个名为的JFrame,其中是文本文件中带有值“”的JTextField。当我将值更改为“”并点击保存按钮时,它会将文本文件重写为“”并处理JFrame。直到现在一切都很好。 当我想再次打开JFrame时,它用旧值""打开它。但是当我关闭两个JFrames并

  • 问题内容: 我有一个简单的表格。所有组件和状态都保存在Page组件中。有2个显示标题和3个输入字段。第一个输入应该是文本,第二个和第三个输入应该是整数。当用户输入错误的数据类型时,我想在输入字段旁边弹出一条错误消息。我的问题与React.JS的最佳做法有关 谁认为该值有效?我想输入字段的唯一工作就是将值引导回到保持状态的组件,这是否意味着只有Page可以确定值是否有效? 然后应该如何显示弹出窗口?

  • 是的,这几乎是如何在ANTLR4中捕获无关输入的复制品?-但在Java的情况下,我需要一个Python解决方案,而移植Java解决方案对我来说根本不管用! ANTLR4正在向控制台写入以下“错误”。我希望这会导致一个硬停止,但解析器会继续并最终重新同步: 我希望这是一个致命的错误。 因此,我定义了自己的错误侦听器,并覆盖了所有4个方法: 我创建了我的lexer,删除了默认的控制台错误监听器,并将我