Pour une raison que j’ignore et que je n’ai pas du tout envie de chercher, un simple focus() refuse de fonctionner.
Voici une solution :
<script type="text/javascript"> $(function() { // doesn't work $('#email').focus(); // works setTimeout( function() { $('#email').focus() }, 0 ); }); </script>
Cherchez pas à comprendre…
Au cas où, le HTML qui va avec :
<form action="/index.php/submissions/login" method="post"> <fieldset> <p> <label for="email">E-mail*:</label> <input id="email" name="email" value="" type="text"> <span class="field error"></span> </p> <p> <label for="password">Password*:</label> <input id="password" name="password" value="" type="password"> <span class="field error"></span> </p> </fieldset> <button id="submit" name="submit" class="positive"><img src="/images/icons/lock.png" alt=""> Enter</button> </form>
DATE 16 Fév 2011
Social Share / Partager
5 Comments
Merci pour la combine, j’ai eu le même problème quand le formulaire était affiché avec un fadeIn() ; le temps de l’animation, la fonction focus devait s’exécuter sans succès, le champ n’étant pas complètement affiché…
Bonne explication en effet !
Merci beaucoup pour l’astuce ! Si un jour j’ai la réponse je viendrais te la donner…
Mais c’est un grand mystère…
Je vois bien que ça date un peu, mais au cas où
[code]
$(document).ready(function() {
$('#email').focus();
});
[/code]
De cette manière il place le focus que lorsque le champ est chargé, en fait l’ensemble de la page
Effectivement tout est plus simple de nos jours, merci pour la précision sur cet article « legacy » 🙂