2008-11-21 4 views
1

Je veux révéler un div avec une entrée à l'intérieur lorsque vous cliquez sur un bouton, et mettre au point.Pourquoi ne puis-je pas concentrer un contrôle que je révèle avec slideDown()?

Si j'utilise show(), cela fonctionne, mais si j'utilise slideDown() , le focus est perdu une fois l'animation terminée. Comment puis-je empêcher cela?

Exemple de code:

$("document").ready(function(){ 
    $("#MyButton").click(function(e){ 
     e.preventDefault(); 
     $(".SlidingDiv").slideDown(); 
     $("#MyInput").focus(); 
    }); 
}); 

<input type="button" value="Click Me" id="MyButton" /> 
<div class="SlidingDiv" style="display:none;"><input type="text" id="MyInput" /></div> 

Répondre

10

Essayez ceci:

$(function(){ 
    $("#MyButton").click(function(e){ 
     e.preventDefault(); 
     $(".SlidingDiv").slideDown(function(){ 
      // Callback function - will occur when sliding is complete. 
      $("#MyInput").focus(); 
     }); 
    }); 
}); 
+0

Oui! Tu gères! Je vous remercie!!! – Teller

+0

Cela a fonctionné pour moi dans 2 des 3 instances mais dans la 3ème, en exécutant $ ("# MyInput"). Focus(); fait disparaître le panneau ou le repositionne plus probablement hors du site dans un autre conteneur. Comment je déteste Javascript – ChadD

1

Je pense que vous ne pouvez concentrer l'élément une fois que la DIV a complètement cessé de glisser?
ne sais pas ...

Questions connexes