2009-11-25 8 views
0

J'ai un contrôle ASP.NET qui contient une case à cocher. Je veux que le focus reste sur cette case quand on clique dessus. Voici ce que j'utilise:MooTools: Définir le focus sur le clic

<script type="text/javascript"> 
    window.addEvent("domready", function() { 

     var acceptCheckId = $("<%= this.accept.ClientID %>").getElement("input"); 

     acceptCheckId.addEvent("click", function() { 
      acceptCheckId.focus(); 
     }); 

    }); 
</script> 

je peux obtenir l'élément de case à cocher dans la variable d'accord acceptCheckId, mais quand je clique dessus, l'accent ne change pas. Ce qui donne?

Si j'ajoute une alerte, l'alerte ne se déclenche jamais:

acceptCheckId.addEvent("click", function() { 
     alert("foobar"); 
     acceptCheckId.focus(); 
    }); 

Répondre

0

Qu'est-ce que votre sortie HTML ressemble? il est impossible de dire quel est le problème avec le code sans savoir comment votre contenu est écrit.

0

Essayez d'utiliser setTimeout

setTimeout(function(){ 
    acceptCheckId.focus(); // this may execute ok 
},200); 

Lorsque vous cliquez sur un élément, l'élément se concentrer, et vous ne pouvez pas concentrer tout autre élément maintenant, parce que cet élément va se concentrer d'abord et utiliser setTimeout , peut différer un certain temps, et après ce temps, vous pouvez mettre l'accent sur n'importe quel élément.

regarder le clic l'ordre d'exécution: clic -> exécuter la fonction onclick -> get focus ->

Dans l'étape 2, la fonction onclick, vous définissez le focus sur un autre élément, mais, après l'exécution du Onclick fonction, l'élément lui-même devrait avoir le focus, ce fait par le navigateur Web!

Questions connexes