Diberikan struktur HTML berikut:
<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>
yang akan diulang beberapa kali pada halaman, bagaimana cara mengatur fokus pada bidang input di .bottom
div saat pengguna mengklik link di .top
div?
Saat ini saya membuat .bottom
div muncul dengan sukses saat diklik menggunakan kode JQuery di bawah ini, tetapi tampaknya tidak dapat menemukan cara mengatur fokus pada bidang input pada saat yang sama.
$('.link').click(function() {
$(this).parent().siblings('div.bottom').show();
});
Terima kasih!
return false;
di akhir acara callback? Ataufunction(e) { e.preventDefault(); ..... }
? Jika tidak, browser Anda hanya akan menavigasi ke halaman itu setelah menjalankan callback.Jawaban:
Coba ini, untuk mengatur fokus ke kolom input pertama:
sumber
input
&:first
. Apakah jQuery menyambungkannya secara otomatis? Saya selalu berpikir seharusnya begituinput:first
.input:first
mungkin cara yang lebih formal untuk menulisnya, meskipun tampaknya lebih mudah untuk dibaca dengan cara lain. Tapi mungkin itu hanya saya :)$(this).parent().siblings('div.bottom').find("input.post").focus();
tetapi.find()
adalah pemilih yang saya cari. Menariknyainput :first
juga tidakinput:first
berhasil.form
tag. Bagaimanapun, senang Anda melakukannya untuk bekerja!Jika masukan kebetulan berada dalam dialog modal bootstrap, jawabannya berbeda. Menyalin dari Cara Mengatur fokus ke input teks pertama dalam modal bootstrap setelah ditampilkan, inilah yang diperlukan:
sumber
Jawaban Justin tidak berhasil untuk saya (Chromium 18, Firefox 43.0.1). jQuery
.focus()
membuat sorotan visual, tetapi kursor teks tidak muncul di lapangan (jquery 3.1.0).Terinspirasi oleh https://www.sitepoint.com/jqueryhtml5-input-focus-cursor-positions/ , saya menambahkan atribut autofocus ke bidang input dan voila!
sumber