2010-09-15 4 views
0

Comment est-ce que je fais pour que cet onFocus se produise juste 1 fois (pas comme maintenant qui bloque les fenêtres avec des boîtes de dialogue)?Comment faire pour que l'onFocus se produise une seule fois?

<html> 
    <form name="myForm"> 
     <input type="button" 
      value="Big Button" 
      name="myButton" 
      onFocus="alert('Focus event occured')"> 
    </form> 
    </html> 

mise à jour:

désolé, quand je dis « une seule fois » Je veux dire une seule fois à chaque fois qu'il reçoit le focus. Actuellement avec un seul focus, il montre des boîtes de dialogue infinies.

Répondre

1

Ceci est problématique. Lorsque le champ d'entrée obtient le focus, l'événement focus est déclenché, vous gérez cet événement en mettant en place une boîte d'alerte qui enlève le focus (un événement "flou") du champ de saisie. Lorsque l'alerte est ignorée, le champ de saisie reçoit de nouveau le focus, ce qui permet de mettre le focus encore une fois et d'effectuer une boucle sans fin de gain/perte/gain. Vous obtenez le focus encore plus d'une fois parce que vous changez la mise au point. Vous ne voulez pas faire quelque chose dans un gestionnaire de focus qui change le focus comme ceci, à moins que ce soit quelque chose du genre "quand ce contrôle obtient le focus, envoyez le focus à cet autre contrôle à la place". Si vous faites quelque chose qui ne provoque pas de changement de focus (ce que fait une alerte), comme l'ajout de texte à un div lorsque vous obtenez le focus, vous verrez que l'événement ne se produira qu'une seule fois.

Si vous décrivez ce que vous tentez d'accomplir, vous obtiendrez de meilleurs conseils. Je suppose que l'alerte est juste un test.

+0

oui, l'alerte est juste un test; Je ne me suis pas rendu compte que c'était perdre et retrouver la concentration ... merci! –

Questions connexes