更改为多行后文本输入失去焦点

Posted

技术标签:

【中文标题】更改为多行后文本输入失去焦点【英文标题】:Text input loses focus after changing to multiline 【发布时间】:2019-02-25 09:06:00 【问题描述】:

我正在使用 Office Fabric UI React 组件,如果用户输入逗号字符,我希望将文本输入切换为多行文本。我可以让这部分工作,但是当输入在单行输入和多行输入之间切换时,它会失去焦点。因此,如果您在文本字段中键入并键入逗号字符,则文本字段将失去焦点。我相信,当我在两者之间切换时,office fabric react 的 textfield 组件会重新渲染一个 textarea 来代替输入,并且焦点将保留在替换的输入上,而不是自动切换到新的文本区域。有什么想法可以确保在切换多行后文本字段保持焦点?我尝试使用元素 ref 设置焦点,但这不起作用..

export class PhoneNumbers extends React.Component 
  constructor(props) 
    super(props);
    this.state = 
      phoneNumber: "",
      isMultipleNumbers: false
    ;
    this.numbersInputRef = React.createRef();
    this.handleNumbersChange = this.handleNumbersChange.bind(this);
  
  handleNumbersChange(event) 
    let numbers = event.target.value;
    this.setState( isMultipleNumbers: numbers.indexOf(";") > 0 ? true : false );
    this.setState(
      phoneNumber: numbers
    );
  

  render() 
    return (
      <TextField
        label="Phone Numbers"
        name="phoneNumber"
        value=this.state.phoneNumber
        onKeyUp=this.handleNumbersChange
        componentRef=input => (this.numbersInputRef = input)
        multiline=this.state.isMultipleNumbers
      />
    );
  

【问题讨论】:

尝试将 autoFocus 属性添加到您的组件中。 啊,太简单了!这解决了它。谢谢! 【参考方案1】:

将 autoFocus 属性添加到组件可以解决问题。谢谢 izb!

【讨论】:

以上是关于更改为多行后文本输入失去焦点的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL 文本框控件点击文字变很小,失去焦点后又回复正常,这怎么解决?

input文本框获取焦点和失去焦点事件判断

axure7.0如何实现光标在文本框中获得焦点时,文本框内容自动清空。失去焦点时显示默认文字,谢谢!

失去焦点事件啥意思

jsp一个文本框在失去焦点的时候,显示其输入的值,如果没有输入该文本框获得焦点

刚刚填写的文本框失去焦点后如何调用事件?