Bagaimana cara memilih semua teks yang di input dengan Reactjs, ketika sudah difokuskan?


Jawaban:


188

Functional component:

const handleFocus = (event) => event.target.select();
const Input = (props) => <input type="text" value="Some something" onFocus={handleFocus} />

ES6 class component:

class Input extends React.Component {
    handleFocus = (event) => event.target.select();

    render() {
        return (
            <input type="text" value="Some something" onFocus={this.handleFocus} />
        );
    }
}

React.createClass:

React.createClass({
    handleFocus: function(event) {
      event.target.select();
    },

    render: function() {
      return (
        <input type="text" value="Some something" onFocus={this.handleFocus} />
      );
    },
})

1
ini bekerja dalam fungsi murni (tanpa kelas), terima kasih untuk solusi ini.
Jan Jarčík

11
Dapat disederhanakan lebih lanjut tanpa memerlukan fungsi tambahan jika hanya untuk satu bidang di kelas:<input type='text' value='Some something' onFocus={e => e.target.select()} />
TK123

4
@ TK123 Anda harus menghindari fungsi panah dalam metode render Anda . Ini juga melanggar jsx-no-bind yang digunakan oleh eslint-config-airbnb misalnya.
dschu

1
Bagaimana cara membuatnya berfungsi untuk disabledkotak teks? jsfiddle.net/69z2wepo/317733
Rahul Desai

3
@RahulDesai Alih-alih disabled, gunakan readOnly: jsfiddle.net/kxgsv678
dschu

5
var InputBox = React.createClass({
  getInitialState(){
    return {
      text: ''
    };
  },
  render: function () {
    return (
      <input
        ref="input"
        className="mainInput"
        placeholder='Text'
        value={this.state.text}
        onChange={(e)=>{this.setState({text:e.target.value});}}
        onFocus={()=>{this.refs.input.select()}}
      />
    )
  }
});

Anda harus mengatur ref pada input dan ketika fokus Anda harus menggunakan select ().


5

Terima kasih, saya menghargainya. Saya melakukannya begitu:

var input = self.refs.value.getDOMNode();
            input.focus();
            input.setSelectionRange(0, input.value.length);

1

Dalam kasus saya, saya ingin memilih teks dari awal setelah input muncul di modal:

componentDidMount: function() {
    this.refs.copy.select();
},

<input ref='copy'

0
var React = require('react');

var Select = React.createClass({
    handleFocus: function(event) {
        event.target.select()
    },
    render: function() {
        <input type="text" onFocus={this.handleFocus} value={'all of this stuff'} />
    }
});

module.exports = Select;

Pilih otomatis semua konten dalam input untuk kelas reaksi. Atribut onFocus pada tag input akan memanggil sebuah fungsi. Fungsi OnFocus memiliki parameter yang disebut event yang dihasilkan secara otomatis. Seperti acara di atas event.target.select () akan mengatur semua konten dari tag input.


0

Komponen Fungsional Cara Lain dengan useRefHook:

const inputEl = useRef(null);

function handleFocus() {
  inputEl.current.select();
}

<input
  type="number"
  value={quantity}
  ref={inputEl}
  onChange={e => setQuantityHandler(e.target.value)}
  onFocus={handleFocus}
/>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.