Biorąc pod uwagę następującą strukturę HTML:
<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>
który będzie powtarzany kilka razy na stronie, jak ustawić fokus na polu wejściowym w .bottom
div, gdy użytkownik kliknie łącze w .top
div?
Obecnie .bottom
sprawiam, że element DIV pojawia się pomyślnie po kliknięciu, używając poniższego kodu JQuery, ale nie mogę dowiedzieć się, jak jednocześnie ustawić fokus na polu wejściowym.
$('.link').click(function() {
$(this).parent().siblings('div.bottom').show();
});
Dzięki!
return false;
wywołanie zwrotne na koniec zdarzenia? Albofunction(e) { e.preventDefault(); ..... }
? Jeśli nie, Twoja przeglądarka po prostu przejdzie do tej strony po wykonaniu wywołania zwrotnego.Odpowiedzi:
Spróbuj tego, aby ustawić fokus na pierwsze pole wejściowe:
źródło
input
&:first
. Czy jQuery łączy to automatycznie? Zawsze myślałem, że tak powinno byćinput:first
.input:first
może to być bardziej formalny sposób zapisania tego, chociaż wydaje się, że łatwiej jest go przeczytać w inny sposób. Ale może to tylko ja :)$(this).parent().siblings('div.bottom').find("input.post").focus();
ale.find()
jest to selektor, którego szukałem. Co ciekawe,input :first
nieinput:first
zadziałało.form
tagu. W każdym razie, cieszę się, że bierzesz się do pracy!Jeśli dane wejściowe znajdują się w modalnym oknie dialogowym ładowania początkowego, odpowiedź jest inna. Kopiowanie z Jak ustawić fokus do pierwszego wprowadzenia tekstu w trybie bootstrap po pokazaniu, jest to, co jest wymagane:
źródło
Odpowiedź Justina nie działa dla mnie (Chromium 18, Firefox 43.0.1). jQuery
.focus()
tworzy wizualne wyróżnienie, ale kursor tekstowy nie pojawia się w polu (jQuery 3.1.0).Zainspirowany https://www.sitepoint.com/jqueryhtml5-input-focus-cursor-positions/ , dodałem atrybut autofocus do pola wprowadzania i voila!
źródło