onFocus没有使用selectionStart获取光标位置

时间:2018-02-23 05:45:52

标签: javascript reactjs

我正在尝试获取用户在文本框中单击的位置的插入位置。我想在用户点击输入的位置添加某个文本。我试图在onFocus的{​​{1}}方法中执行此操作。但是,input总是给我e.target.selectionStart

0

感谢任何帮助

CodeSandbox https://codesandbox.io/s/6x623x50r

1 个答案:

答案 0 :(得分:1)

不是获取光标位置值onFocus事件,而是执行onMouseUp事件。当输入被聚焦并且您在同一输入中的其他位置单击时,不会调用onFocus。

class Input extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      value: "hello"
    };
  }

  onMouseUp = e => {
    console.log(e.target.id);
    console.log(e.target.selectionStart);
  };

  onChange = e => {
    this.setState({
      value: e.target.value
    });
  };

  render() {
    return (
      <input
        id="my-input"
        onChange={this.onChange}
        value={this.state.value}
        onMouseUp={this.onMouseUp}
      />
    );
  }
}

Working codeSandbox

获取selectionStart onFocus事件时出现错误,您可以查看问题here