Làm thế nào để chọn tất cả văn bản trong đầu vào với Reactjs, khi nó tập trung?


Câu trả lời:


187

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
điều này hoạt động trong chức năng thuần túy (không có lớp), thx cho giải pháp này.
Jan Jarčík

11
Có thể được đơn giản hóa hơn nữa mà không cần chức năng bổ sung trong trường hợp nó chỉ cho một lĩnh vực trong lớp:<input type='text' value='Some something' onFocus={e => e.target.select()} />
TK123


1
Làm cách nào để điều này hoạt động cho một disabledhộp văn bản? jsfiddle.net/69z2wepo/317733
Rahul Desai

3
@RahulDesai Thay vì disabled, hãy sử dụng 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()}}
      />
    )
  }
});

Bạn phải đặt ref trên đầu vào và khi lấy nét, bạn phải sử dụng select ().


5

Cảm ơn, tôi đánh giá cao nó. Tôi đã làm như vậy:

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

1

Trong trường hợp của tôi, tôi muốn chọn văn bản từ đầu sau khi đầu vào xuất hiện trong phương thức:

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;

Tự động chọn tất cả nội dung trong đầu vào cho một lớp phản ứng. Thuộc tính onFocus trên thẻ đầu vào sẽ gọi một hàm. Hàm OnFocus có một tham số gọi là sự kiện được tạo tự động. Giống như hiển thị ở trên event.target.select () sẽ thiết lập tất cả nội dung của thẻ đầu vào.


0

Thành phần chức năng theo cách khác với 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}
/>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.