Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

168
Vistas
¿Cómo evitar carreras entre eventos de clic y desenfoque?

mi código angular se ve así>

 <input type='text' (blur)='saveData()'> <button (click)='navigateToPage2()'>

Saltando desde el cuadro de texto enfocado al clic del botón , hay una condición de carrera entre dos eventos.

El problema es que el clic del botón se ignora porque el evento de desenfoque se activa primero y trae la rueda giratoria a la pantalla mientras realiza una llamada al servidor para guardar datos.

¿Cómo resuelvo este problema exacto?

¿Hay algún truco para hacer que el evento de clic se active antes del evento de desenfoque?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

En lugar de tal truco para disparar, haga clic antes del evento de desenfoque, intente la siguiente solución:

Para comprender esto mejor, debe conocer este orden en el que se activa un evento específico:

  1. ratón hacia abajo
  2. difuminar
  3. ratón arriba
  4. hacer clic

Puede usar esta orden para trabajar a su favor en este caso.

Intente usar el evento Mousedown en su lugar y eso se activará antes del evento de desenfoque.

Además, intente ejecutar este fragmento de código. Te ayudará a entender el orden anterior.

 Type first in text box below and then click button <br/> <input type='text' onblur="console.log('blur');" /> <button onclick="console.log('click')" onmouseup="console.log('mouseup')" onmousedown="console.log('mousedown')" > Type first and then this click button</button>

over 4 years ago · Santiago Trujillo Denunciar

0

De acuerdo con este ejemplo, también puede usar e.preventDefault en el evento mouseDown: https://codepen.io/mudassir0909/pen/eIHqB (usó jquery pero debería ser lo mismo con otra biblioteca)

over 4 years ago · Santiago Trujillo Denunciar

0

Si está escuchando en (blur)="onBlur()" envuelva el contenido de onBlur() en un setTimout con una duración de 100 ms o más.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda