Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

992
Views
Deshabilite el desplazamiento en `<tipo de entrada=número>` en React

Esta pregunta se hizo antes, pero la solución provista es solo para jQuery , ya que estoy enfrentando el mismo problema en ReactJs.

¿Es posible deshabilitar la rueda de desplazamiento cambiando el número en un campo de número de entrada? Eliminé las flechas giratorias usando CSS, pero la rueda del mouse aún funcionaba y estropeaba la funcionalidad.

Quiero el number de tipo de entrada porque da teclado numérico en dispositivos móviles/táctiles.

over 4 years ago · Santiago Trujillo
6 answers
Answer question

0

No creo que esta sea la mejor solución si solo desea un teclado numérico, ya que hay una propiedad que le permite configurar el tipo de teclado que desee, por ejemplo, inputMode="numeric"

Cambiar eventos globales no es una buena práctica y tampoco lo es desdibujarse fuera del campo.

over 4 years ago · Santiago Trujillo Report

0

Respuesta más simple:

 <input type="number" onWheel={(e) => e.target.blur()} />

e es la abreviatura de event .

Esto también funciona:

 <input type="number" onWheel={() => document.activeElement.blur()} />

Cualquiera de estos se puede usar en un componente funcional o de clase .

over 4 years ago · Santiago Trujillo Report

0

 <input type="tel" pattern="[0-9]*" />

Puede usar <input type="tel" pattern="[0-9]*" /> y no recuerdo haber visto ningún pergamino, y también obtiene un teclado numérico en dispositivos móviles.

over 4 years ago · Santiago Trujillo Report

0

Puede desenfocar el campo en el controlador onWheel. Algo como esto

 <input type='number' onWheel={ event => event.currentTarget.blur() } />
over 4 years ago · Santiago Trujillo Report

0

En la versión de reacción, debe usar ref. Eche un vistazo al ejemplo a continuación:

 import React, { Component, createRef } from "react"; class MyInput extends Component { constructor(props) { super(props); this.inputRef = createRef(); } onWheel = () => { this.inputRef.current.blur(); }; render() { return ( <div> My input number : <input type="number" ref={this.inputRef} onWheel={this.onWheel} /> </div> ); } } export default MyInput;

códigos y caja aquí

over 4 years ago · Santiago Trujillo Report

0

Resolví esto usando un componente funcional que envuelve el elemento de input y agrega un detector de eventos para "wheel" y evita el comportamiento predeterminado. Encuentro esto preferible a usar blur() que puede tener una experiencia de usuario indeseable.

 // Simply a wrapper for <input type="number"/> that disables scrolling to increment import { useEffect, useRef } from "react"; export const NumberInput = (props) => { const quantityInputRef = useRef(null); useEffect(() => { const ignoreScroll = (e) => { e.preventDefault(); }; quantityInputRef.current && quantityInputRef.current.addEventListener("wheel", ignoreScroll); }, [quantityInputRef]); return <input ref={quantityInputRef} type="number" {...props} />; };

En producción, en realidad uso este componente para deshabilitar el incremento de desplazamiento para el componente <TextField> de material-ui en lugar de <input> . He usado la entrada nativa en mi ejemplo porque de eso se trataba la pregunta.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!