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

如何将材质UI文本字段集中在按钮单击上?

颛孙霖
2023-03-14

如何在单击按钮后聚焦文本字段。我尝试使用自动对焦,但没有成功:示例沙盒

  <div>
    <button onclick={() => this.setState({ focus: true })}>
      Click to focus Textfield
    </button>
    <br />
    <TextField
      label="My Textfield"
      id="mui-theme-provider-input"
      autoFocus={this.state.focus}
    />
  </div>

共有3个答案

邢和光
2023-03-14

首先,onclick必须是正确的,就像onclick
那么如果您想在JSX代码中使用它,它会有所帮助<我用react 16测试了它,它很有效

 <button onClick={() => this.myTextField.focus()}>
    Click to focus Textfield
 </button>

<TextField
       label="My Textfield"
       id="mui-theme-provider-input"
       inputRef={(el) => (this.myTextField = el)} />
宿景曜
2023-03-14

如果您使用的是无状态函数组件,那么您可以使用响应钩子。

import React, { useState, useRef } from "react";

let MyFunctional = (props) => {

  let textInput = useRef(null);

  return (
    <div>
      <Button
        onClick={() => {
          setTimeout(() => {
            textInput.current.focus();
          }, 100);
        }}
      >
        Focus TextField
      </Button>
      <TextField
        fullWidth
        required
        inputRef={textInput}
        name="firstName"
        type="text"
        placeholder="Enter Your First Name"
        label="First Name"
      />
    </div>
  );
};
邢永安
2023-03-14

您需要使用ref,请参阅https://reactjs.org/docs/refs-and-the-dom.html#adding-a-ref-to-a-dom-element

class CustomTextInput extends React.Component {
  constructor(props) {
    super(props);
    // create a ref to store the textInput DOM element
    this.textInput = React.createRef();
    this.focusTextInput = this.focusTextInput.bind(this);
  }

  focusTextInput() {
    // Explicitly focus the text input using the raw DOM API
    // Note: we're accessing "current" to get the DOM node
    this.textInput.current.focus();
  }

  render() {
    // tell React that we want to associate the <input> ref
    // with the `textInput` that we created in the constructor
    return (
        <div>
          <button onClick={this.focusTextInput}>
            Click to focus Textfield
          </button>
       <br />
       <TextField
         label="My Textfield"
         id="mui-theme-provider-input"
         inputRef={this.textInput} 
       />
     </div>

    );
  }
}

更新了材料UI v3的inputRef参考。6.1.

 类似资料:
  • 我不知道如何在材质UI中居中放置按钮。这是我的代码: 我怎样才能使我的按钮居中?

  • 我试图得到分页从材料UI,但我想中心的箭头和页数的按钮。 我试图通过创建

  • 我想在一个材料UI按钮中居中文本,以便文本居中,而不管它旁边的图标。目前,图标包括在居中。 演示中的顶部两个按钮显示了它目前的外观,我正在寻找文本,因为它在底部两个按钮中出现。这些按钮的前后分别带有图标,而不影响按钮的文字。 最后两个是期望输出 https://codesandbox.io/s/material-demo-forked-tj8ko?file=/demo.js

  • 我的目标是通过单击对话框中的按钮,在关闭对话框后将焦点设置在材质UI文本字段上。 当我从对话框组件中不存在的按钮调用它时,下面的代码可以工作: 按钮代码: 我想关注的文本字段代码: 但是一旦我试图从对话框中的按钮调用焦点标题(),它就不会触发焦点。 对话框代码: 有人知道为什么我的. point()在对话框中不起作用吗?如果我记录this.refs.my参考文献在这两种情况下,它显示完全相同的结果

  • 我一直在试图找出如何样式的材料ui TextField组件。 我的类创建如下: 我的问题是,我似乎无法让文本字段的颜色变成白色。我似乎能够将样式应用于整个文本字段(因为宽度样式工作等)...但是我认为问题是我没有将样式应用到链的更下游和实际输入中。 我曾试图寻找其他关于传递输入道具的答案,但没有成功。 我已经尽了我最大的努力,但我想我需要问问是否有人知道我做错了什么。 它现在看起来是什么样子

  • 我创建表单,我有几个TextField, DropDownMenu材料UI组件包括,问题是我如何可以收集所有的数据从所有的TextFields, DropDownMenus在一个obj和发送到服务器上。对于TextField,它具有TextField.getValue()返回输入的值。但是我不明白如何使用它。 我想把它发送到服务器上_handleClick方法。