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

手动从文本字段中失去焦点选择组件,材料界面

龙星辰
2023-03-14

我有一个select输入,我使用MaterialUI库中的TextField组件创建它。选择某些选项后,我需要手动失去焦点。我尝试使用'inputRef'prop引用TextField,这非常有效,但是当我尝试在这个函数上启动blur()函数时。选择输入。就像我在这里做的,但没有材料库。

class Select extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
    	selected: ''
    }
    
    this.inputRef = React.createRef();
    this.onChangeHandler = this.onChangeHandler.bind(this)
  }
  
  onChangeHandler(e){
  
	this.inputRef.current.blur()

  	this.setState({
    	selected: e.target.value
    })
  }
  
  render() {
  	const {selected} = this.state;
  
    return (
      <select value={selected}
          onChange={this.onChangeHandler}
          ref={this.inputRef}>
        <option value=''>Please select</option>
        <option value='1'>One</option>
        <option value='2'>Two</option>
      </select>
    )
  }
}

ReactDOM.render(<Select />, document.querySelector("#app"))
<script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>

<div id="app"></div>

我得到一个错误,blur()函数不存在。我了解材料用户界面使用自定义el。为了创建UI,我只针对一个div或其他对象。所以问题是,当使用TextField组件时,这是另一种获得确切行为(失去对select事件的关注)的方法,还是我做错了什么?

材料界面v1。3.1 |反应v16。4.2

共有2个答案

诸葛茂勋
2023-03-14

我在react material ui Select组件中遇到了类似的模糊事件问题

下面的解决方案对我有效。/b>

import Select from '@material-ui/core/Select';
<Select
...
onClose={()=>{
    setTimeout(() => {
        setOpen(false)
        handleSubmit();
    }, 0);
}}
/>
邴景山
2023-03-14

尝试使用以下主体定义onClose方法:

onClose() {
    setTimeout(() => {
        document.activeElement.blur();
    }, 0);
}

然后将此方法传递给select元素的onClose属性。

 类似资料:
  • 我想得到一个文本字段,每当我点击/点击/聚焦该字段时,它可以选择该字段中当前的全部文本。我自己也在其他React应用程序中使用了一个执行,但这种方法似乎不适用于材质UI。使用Material UI TextFields,我可以看到所选内容简短地覆盖了全文,然后返回到文本末尾闪烁的光标。 你知道怎么做吗?

  • 我是swift编程的新手,我需要设计带有浮动占位符输入的登录页面。我已经使用POD安装了MDCTextInput。 添加的导入 并且在viewDidLoad()下面添加的代码中, Material iOS Github链接为:material-components-ios

  • 伙计们,我使用了Material-UI文本字段,并通过使它成为一个自定义组件来创建一些自定义主题选项。 如下所示:- 在我的组件中,我注入如下:- 所以在每个输入上发生的事情,我的组件呈现,光标从文本字段跳出来,所以为了输入下一个值,我必须再次单击文本字段。 但是当我使用普通的文本字段时,直接在组件中它工作得很好,我理解这是因为onChange事件和在自定义组件中使用文本字段。 在每个值上更改父组

  • 是否可以在材料设计日期选择器中添加轮廓并隐藏mm/dd/yyyy文本:https://material.io/components/date-pickers#anatomy

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

  • 问题内容: 我正在制作动态表格。一个有值的列表。每个值由一个字符串表示。 我的组件中有一个函数,可以向该字段添加新值。 值和按钮在我的HTML中这样显示。 一旦我在值的输入中写入一些文本,输入就会失去焦点。如果我在一个字段中添加了多个值,并且在一个输入值中写入了一个字符,则该输入将失去焦点,并且该字符将写入每个输入中。 问题答案: 当数组是原始类型(在您的情况下是数组)时,会发生这种情况。这可以通