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

将焦点设置在react引导上。使用参照输入字段。x、 getDOMNode。集中

卫诚
2023-03-14

JSX:

var Button = require("react-bootstrap").Button;
var Input = require("react-bootstrap").Input;
var MyClass = React.createClass({
        onclick: function () {
           this.refs.email.getDOMNode().focus();
           console.log('DOM element', this.refs.email.getDOMNode());
        }
        render: function () {
          return (
             <div>
                <Button onClick={this.onlick}>Login</Button>
                <Input ref='email' type='email' />
             </div>
            );
        },
    });  

笔记

  1. 输入字段是一个react引导。输入class

当ButtonOnClick处理程序运行时,电子邮件输入字段应该获得焦点,但它没有发生。我发现react引导输入字段类正在包装div中呈现真实的DOM输入字段。这是控制台的输出。日志:

<div class="form-group" data-reactid=".1awy8d4e9kw.1.3.$=1$3:0.0.0.1.0">
  <input class="form-control" type="email" data-reactid=".1awy8d4e9kw.1.3.$=1$3:0.0.0.1.0.1:$input">
</div>

因此,看起来输入没有获得焦点,因为焦点应用于包装div,而包装div拒绝了它(我在控制台中使用document.activeElement进行检查)。

问题是,如何关注真正的输入元素?

注意:有点不相关,但React尊重autoFocus属性。在渲染后需要立即设置焦点的情况下,这非常有用。尽管如此,它并不能替代编程方式。

共有3个答案

潘衡
2023-03-14

由于findDOMNode不再是建议的方法,Facebook可能会不推荐它,因此您应该使用autoFocus属性(由React框架提供,而不是React引导提供)。这是HTMLautofocus属性的跨浏览器多边形填充。

<FormControl
  autoFocus
  ...
/>

资料来源:

  1. 关注表单控件
慕宜民
2023-03-14

渲染中

<FormControl
  type='text'
  ref={(c)=>this.formControlRef=c}
  />

事件内处理程序

someHandler() {
  ReactDOM.findDOMNode(this.formControlRef).focus();
}
狄灵均
2023-03-14

尝试getInputDOMNode()而不是getDOMNode()

 类似资料:
  • 问题内容: 数据加载后是否可以通过控制器设置输入字段的焦点(在这种情况下,通过$ resource)? 通过ng-show隐藏输入,直到从API返回数据为止,但是我找不到将焦点设置在输入上的方法。我知道输入的ng- model名称,以及输入名称,这意味着我可以通过jQuery来做到这一点,但我宁愿使用AngularJS方式来做到这一点。 我在这里尝试了很多指令示例,但是它们似乎都集中在1.2 ng

  • 问题内容: 呈现组件后,将焦点设置在特定文本字段上的反应是什么? 文档似乎建议使用引用,例如: 在渲染函数中的输入字段上进行设置,然后调用: 但是我应该在哪里称呼它?我已经尝试了几个地方,但无法正常工作。 问题答案: 您应该这样做,而不是。像这样

  • 我应该让我的组件“受控”吗?什么是“最佳实践”?

  • 我决定使用来构建网格。 要有更好的UI,只有一件事,那就是在单击AddNew按钮后,我想关注新项目的输入字段。 我打算使用,但不知道如何子项 下面是我使用react表的示例: https://codesandbox.io/s/beautiful-proskuriakova-lpfxn 在这种情况下,我希望在添加新行后关注字段。 更新:我可以通过使用本机HTML提供的支持来关注输入。 答案在这里 但

  • 问题内容: 我有一个用netbeans开发的应用程序,我想在显示面板时将焦点设置为一定。我已经阅读了许多文章,并尝试了各种方法,但没有奏效。主要问题之一是在哪里放置所需的代码,我认为在我的情况下是 有一些指示使用Window Listener的帖子,但是随着netbeans生成GUI,我无法看到如何实现接口,因为我无法编辑创建jPANEL等的代码。整个过程非常令人沮丧,我真的没有相信这应该很困难。

  • 我有一个EditText-Field,并为它设置了一个OnFocusChangeListener。当它失去焦点时,将调用一个方法,该方法用数据库中的EditText检查EditText的值。如果方法的return-value为true,则显示一个toast并且焦点应该再次回到EditText上。焦点应该总是回到EditText上,键盘应该显示,直到方法的return-value为false。 ed