Compte tenu de la structure HTML suivante:
<div class="wrapper">
<div class="top">
<a href="http://example.com" class="link">click here</a>
</div>
<div class="middle">
some text
</div>
<div class="bottom">
<form>
<input type="text" class="post">
<input type="submit">
</form>
</div>
<div>
qui sera répété plusieurs fois sur la page, comment définir le focus sur le champ de saisie dans le .bottom
div lorsqu'un utilisateur clique sur le lien dans le .top
div?
Je fais actuellement .bottom
apparaître le div avec succès sur clic en utilisant le code JQuery ci-dessous, mais je n'arrive pas à comprendre comment définir le focus sur le champ de saisie en même temps.
$('.link').click(function() {
$(this).parent().siblings('div.bottom').show();
});
Merci!
return false;
à la fin du rappel d'événement? Oufunction(e) { e.preventDefault(); ..... }
? Sinon, votre navigateur naviguera simplement vers cette page après avoir exécuté le rappel.Réponses:
Essayez ceci, pour définir le focus sur le premier champ de saisie:
la source
input
&:first
. JQuery joint-t-il cela automatiquement? J'ai toujours pensé que ça devrait l'êtreinput:first
.input:first
peut-être la manière la plus formelle de l'écrire, même si cela semble plus facile à lire dans l'autre sens. Mais peut-être que c'est juste moi :)$(this).parent().siblings('div.bottom').find("input.post").focus();
mais.find()
c'est le sélecteur que je recherchais. Intéressantinput :first
niinput:first
travaillé.form
balise. Quoi qu'il en soit, content que vous alliez travailler!Si l'entrée se trouve dans une boîte de dialogue modale bootstrap, la réponse est différente. Copier de Comment définir le focus vers la première entrée de texte dans un modal bootstrap après avoir montré ce qui est nécessaire:
la source
La réponse de Justin n'a pas fonctionné pour moi (Chromium 18, Firefox 43.0.1). jQuery
.focus()
crée une surbrillance visuelle, mais le curseur de texte n'apparaît pas dans le champ (jquery 3.1.0).Inspiré par https://www.sitepoint.com/jqueryhtml5-input-focus-cursor-positions/ , j'ai ajouté l' attribut autofocus au champ de saisie et le tour est joué!
la source