0
votes

Invoquer la méthode de mise au point provoque l'incendie sans fin

Je veux valider une boîte d'entrée lorsque l'utilisateur passe sur un autre champ. J'ai le code suivant qui fonctionne bien.

p>

<p>Enter only 'yes' in this field:</p>
<input onblur='validate(this);' />


3 commentaires

Vous perdez la concentration lorsque alerte () fin, vous pouvez simplement vérifier cela utiliser votre code actuel en question.


BTW, c'est vraiment ennuyeux, veuillez utiliser une autre méthode (comme la validation de formulaire) pour le faire. (Utilisateur: Permettez-moi de passer à autre chose, je vais réparer cela plus tard!)


Je ne suis pas sûr de la spécification pour alerte () , cependant. Donc, je ne posterais pas comme réponse.


3 Réponses :


1
votes

Selon W3Schools:

Remarque: La boîte d'alerte prend la mise au point de la fenêtre actuelle et oblige le navigateur à lire le message. N'utilisez pas cette méthode, car elle empêche l'utilisateur d'accéder à d'autres parties de la page jusqu'à la fermeture de la boîte.

lien: https://www.w3schools.com/jsref/met_win_alert .asp

ALERTE prend la mise au point de l'entrée créant une boucle sans fin. La solution consiste à afficher le message d'une manière différente. Par exemple, dans un élément de plage: xxx


4 commentaires

Mais mon alerte est avant appelant la méthode mise au point .


@Old geezer. L'ordre n'a pas d'importance, car JavaScript est mono-thread et les événements sont traités tout après votre code. Medium.com/front-end-weekly/...


@ClaudiAchersin j'ai ajouté un console.log Ligne après l'alerte et il n'y avait pas de sortie de console tant que la boîte de dialogue alerte est fermée.


@Old Geezer Oui, bien sûr, la console.log se produit après la fermeture de l'alerte (l'alerte est synchronisée). Est-ce que l'Onblur n'est exécuté qu'après la terminaison de l'exécution de la fonction de validation.



0
votes

Ce que vous faites est de courir constamment surblur fonction, vous l'exécutez à nouveau et à nouveau et sur chaque itération, cela vous donne une alerte.

  1. Entrée d'entrée Obtient l'événement Onblur, Affiche une alerte, se concentre automatiquement sur l'entrée.
  2. Vous cliquez sur n'importe où et surblurise à nouveau, affiche une alerte et se concentre à nouveau sur l'entrée.

    Et vous le faites dans une boucle pour ainsi dire.

    Au lieu de vous concentrer sur l'entrée, vous pouvez simplement lui donner la couleur de la bordure. De cette façon, votre Onblur va tirer une seule fois.


0 commentaires

2
votes

Utilisation de alerte () supprime la mise au point de l'élément actif qui provoque "code> flou" / code> pour déclencher. Ainsi, selon votre script, flou déclenche continuellement. Utilisez console.log () qui vous aide à comprendre à ce sujet beaucoup mieux.


2 commentaires

console.log ne déclencherait pas flou peut ne pas aider à comprendre quelque chose.


Afin de vérifier si flou incendie en continu, connectez-vous les résultats dans la console. Vous allez apprendre à ce que ce soit à la suite.