J'ai vu des questions similaires sur SO, y compris celui-ci , qui est vieux. J'ai lu et suivi des liens, mais il n'est pas clair s'il existe aujourd'hui une solution appropriée à ce problème.
Mon dernier problème est que j'utilise le code HTML placeholder="..."
dans les champs de saisie. En se concentrant automatiquement sur le premier champ, son espace réservé n'est plus visible par l'utilisateur.
MODIFIER
Voici mon code HTML:
<div id='LOGIN_FORM' title="Login">
<form action="">
<input type="text" name="login_id" required="required"
placeholder="Enter user ID" /><br />
<input type="password" name="login_pwd" required="required"
placeholder="Enter password" /><br />
</form>
</div>
Voici mon code JS:
$("#login").click(function() {
$("#LOGIN_FORM").dialog({ modal: true }, { buttons: [
{
text: "Ok",
click: function() { $(this).dialog("close"); }
}
] });
});
Une solution consiste à définir tabindex="-1"
surTOUS LESchamps d'entrée pour que les espaces réservés HTML restent visibles.
Ce que j'ai fait, c'est que j'ai créé une entrée supplémentaire et l'ai rendue invisible (style="display:none"
), puis lui a donné la propriété autofocus="true"
et l'a placé à la fin du contenu de votre boîte de dialogue pour qu'il ne gache rien. ça devrait ressembler à ça:
<div><!--dialog div-->
<button></button>
<button></button>
<input type="hidden" autofocus="true" />
</div>
Ajouter cette balise comme premier champ de saisie de la page me convient.
<input type="text" autofocus="autofocus" style="display:none" />
Pas besoin de javascript et conserve l'ordre de tabulation si vous souhaitez utiliser la touche de tabulation pour vous déplacer dans les champs.
(Testé sur Chrome> 65, Firefox> 59 et Edge)
J'ai fini par faire ceci:
<input type="text" style="position: fixed; left: -10000000px;" disabled/>
Vous pouvez utiliser jquery:
jQuery(document).ready(function(e) {
$('input[name="login_id"]').blur();
});
Cela si vous avez du mal à trouver le bogue pour lequel la mise au point automatique est définie dans votre premier champ de saisie du formulaire. Veillez à insérer ce code avant la balise </body>
body de fermeture de votre document.