如何在React中使用Material-UI在onFocus事件上的Textfield中选择文本的一部分?

时间:2019-01-29 08:14:15

标签: javascript reactjs material-ui textfield

我在React App中有一个带有-UI TextField材质的模态形式,我有一个默认值es。一个文件,当元素加载时,我只会选择文件名而不选择扩展名。...

我在标签TextField中做了以下代码:

<textField 
    value={value}
    fullWidth
    autoFocus
    onFocus={event => {
    event.target.select()}} />

,但这将选择textField中的所有文本。 enter image description here 如何只选择一部分文字? 例如:如果我有myfile.doc,则只能选择myfile 像这样 enter image description here

谢谢

2 个答案:

答案 0 :(得分:2)

结合使用setSelectionRangelastIndexOf方法来查找最后一个.的位置。

class App extends React.Component {
  handleFocus = event => {
    event.preventDefault();
    const { target } = event;
    const extensionStarts = target.value.lastIndexOf('.');
    target.focus();
    target.setSelectionRange(0, extensionStarts);
  }
  
  render(){
    return (
      <input
        value={'myfile.doc'}
        onFocus={this.handleFocus}
      />
    )
  }
}

ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>

答案 1 :(得分:1)

我将使用split并获取数组的第一项。

text = "mydoc.doc";
console.log(text.split(".")[0]);