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

215
Views
Cómo deshabilitar la tecla ENTER en el formulario de autocompletado de la interfaz de usuario de React Material

Tengo un formulario de autocompletado de IU de material en un componente React. Funciona perfectamente, excepto que la tecla ENTER actualmente está borrando el campo de entrada. Simplemente quiero que el campo de entrada no se borre cuando el usuario presiona la tecla ENTER . Busqué en todas las preguntas similares en Stackoverflow, y ninguna de ellas trata de ignorar esta clave dentro de un formulario de Autocompletar (en su mayoría se ocupan de formularios de entrada regulares). A continuación enumero todas las cosas que he probado que no funcionan.

¿Cómo puedo desactivar la tecla ENTER en esta situación?

He intentado ignorar la tecla Intro como:

 onKeyPress={(event) => {return event.key !== 'Enter';}}

También he intentado evitar que la tecla de entrada de autocompletar se tome como un envío de formulario (con la esperanza de que no borre el formulario) haciendo esto:

 onKeyPress={(event) => { if (event.key === 'Enter') { event.preventDefault(); return false; } }

Incluso probé:

 onKeyPress={(event) => { if (event.key === 'Enter') { event.stopPropagation(); return false; } }

Y sí, también intenté usar onKeyDown en lugar de onKeyPress para los dos ejemplos anteriores.

Finalmente, intenté usar la opción disableClearable en el componente Autocompletar como se muestra a continuación:

 const onInputChange = useCallback( (_event: ChangeEvent<{}>, newInputValue: string) => { debounceFetchData(newInputValue); }, [debounceFetchData] ); return ( <section className={classes.container}> <SearchIcon className={classes.icon} /> <Autocomplete id="search" options={options} disableClearable getOptionLabel={() => ''} filterOptions={(x) => x} fullWidth freeSolo onInputChange={onInputChange} renderInput={(params) => ( <TextField {...params} placeholder="Search" variant="outlined" size="small" inputProps={{ ...params.inputProps, 'aria-label': 'Search', }} /> )} ... ... ... />
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

También me había apegado a esto durante algún tiempo y encontré la respuesta aquí .

Simplemente se puede manejar pasando el controlador onKeyDown a inputProps de <TextField> :

 <Autocomplete ... renderInput={(params) => ( <TextField {...params} ... inputProps={{ ...params.inputProps, onKeyDown: (e) => { if (e.key === 'Enter') { e.stopPropagation(); } }, }} /> )} ... ... ... />
about 4 years ago · Juan Pablo Isaza Report

0

Esto funciona, pero elimina la capacidad de usar el teclado para seleccionar un valor.

Tenga en cuenta que se deben omitir los puntos suspensivos después de {...params} .

about 4 years ago · Juan Pablo Isaza 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!