¿Cómo enfocarse en la siguiente entrada de campo en ReactJS?

Si queremos centrarnos en el campo de entrada de texto cuando el campo de entrada actual alcance su capacidad máxima de caracteres, tenemos que encontrar el siguiente elemento HTML de entrada y hacer que se centre. Cada vez que el usuario escribe en el campo de texto actual, debemos verificar si el campo tiene un carácter máximo especificado. En caso afirmativo, entonces tenemos que centrarnos en el campo de entrada de texto. Podemos usar la función focus() para enfocar el campo de entrada en particular.

Creando la aplicación React:

Paso 1: Cree una aplicación React usando el siguiente comando:

npx create-react-app foldername

Paso 2: después de crear la carpeta de su proyecto, es decir, el nombre de la carpeta, acceda a ella con el siguiente comando:

cd foldername

Estructura del proyecto: Tendrá el siguiente aspecto.

Ejemplo: podemos ver en el código, cada vez que escribimos en el campo de entrada, se llamará a la función handleChange y decidirá si el siguiente campo debe ser el foco o no en función de la cantidad de caracteres escritos en el campo de entrada actual . Si alcanza el carácter máximo, encontrará el siguiente campo y lo enfocará. Así es como se enfoca el siguiente campo de entrada cuando el campo de entrada actual alcanza el límite máximo de caracteres.

App.js

import React from "react";
  
class App extends React.Component {
  render() {
    return (
      <div>
        <InputFields></InputFields>
      </div>
    );
  }
}
  
class InputFields extends React.Component {
  handleChange = (e) => {
    const { maxLength, value, name } = e.target;
    const [fieldName, fieldIndex] = name.split("-");
  
    let fieldIntIndex = parseInt(fieldIndex, 10);
  
    // Check if no of char in field == maxlength
    if (value.length >= maxLength) {
  
      // It should not be last input field
      if (fieldIntIndex < 3) {
  
        // Get the next input field using it's name
        const nextfield = document.querySelector(
          `input[name=field-${fieldIntIndex + 1}]`
        );
  
        // If found, focus the next field
        if (nextfield !== null) {
          nextfield.focus();
        }
      }
    }
  };
  
  render() {
    return (
      <div style={{ padding: 30 }}>
        <InputFild name="field-1" length="3" 
                   handleChange={this.handleChange} />
        <InputFild name="field-2" length="4" 
                   handleChange={this.handleChange} />
        <InputFild name="field-3" length="3" 
                   handleChange={this.handleChange} />
      </div>
    );
  }
}
class InputFild extends React.Component {
  render() {
    return (
      <input
        style={{ margin: 10 }}
        type="text"
        name={this.props.name}
        maxLength={this.props.length}
        onChange={this.props.handleChange}
      ></input>
    );
  }
}
  
export default App;

Producción:

Publicación traducida automáticamente

Artículo escrito por KapilChhipa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *