Odaklandığında Reactjs ile girişteki tüm metin nasıl seçilir?


Yanıtlar:


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
bu saf fonksiyonda çalışır (sınıf yok), bu çözüm için teşekkürler.
Jan Jarčík

11
Sınıftaki yalnızca bir alan için olması durumunda ekstra fonksiyona gerek kalmadan daha da basitleştirilebilir:<input type='text' value='Some something' onFocus={e => e.target.select()} />
TK123

4
@ TK123 Oluşturma yöntemlerinizde ok işlevlerinden kaçınmalısınız . Ayrıca , örneğin eslint-config-airbnb tarafından kullanılan jsx-no-bind'ı da ihlal eder .
dschu

1
Bunu bir disabledmetin kutusu için nasıl çalıştırırım ? jsfiddle.net/69z2wepo/317733
Rahul Desai

3
@RahulDesai Bunun yerine şunu disabledkullanın 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()}}
      />
    )
  }
});

Girişte ref ayarlamalısınız ve odaklandığınızda select () kullanmalısınız.


5

Teşekkürler bunun için minnettarım. Ben de öyle yaptım:

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

1

Benim durumumda, giriş modalda göründükten sonra metni baştan seçmek istedim:

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;

Bir react sınıfı için bir girdideki tüm içeriği otomatik seçin. Bir giriş etiketindeki onFocus niteliği bir işlevi çağırır. OnFocus işlevi, otomatik olarak oluşturulan olay adı verilen bir parametreye sahiptir. Yukarıda gösterildiği gibi event.target.select (), bir giriş etiketinin tüm içeriğini ayarlayacaktır.


0

UseRefHook ile Başka Bir Yönlü Fonksiyonel Bileşen:

const inputEl = useRef(null);

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

<input
  type="number"
  value={quantity}
  ref={inputEl}
  onChange={e => setQuantityHandler(e.target.value)}
  onFocus={handleFocus}
/>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.