Beberapa jawaban di sini menyarankan setTimeoutuntuk menunda proses pemfokusan pada elemen target. Salah satunya menyebutkan bahwa target ada di dalam dialog modal. Saya tidak dapat berkomentar lebih lanjut tentang kebenaran dari setTimeoutsolusi tanpa mengetahui detail spesifik di mana ia digunakan. Namun, saya pikir saya harus memberikan jawaban di sini untuk membantu orang-orang yang mengalami thread ini sama seperti saya
Fakta sederhananya adalah bahwa Anda tidak dapat fokus pada elemen yang belum terlihat . Jika Anda mengalami masalah ini, pastikan target benar-benar terlihat saat upaya memfokuskannya. Dalam kasus saya sendiri, saya melakukan sesuatu seperti itu
$('#elementid').animate({left:0,duration:'slow'});
$('#elementid').focus();
Ini tidak berhasil. Aku hanya menyadari apa yang terjadi ketika saya dieksekusi $ ( '# elementid'). Focus () `dari konsol yang melakukan pekerjaan. Perbedaannya - dalam kode saya di atas target tidak ada kepastian bahwa target akan terlihat karena animasi mungkin tidak lengkap . Dan di situlah letak petunjuknya
$('#elementid').animate({left:0,duration:'slow',complete:focusFunction});
function focusFunction(){$('#elementid').focus();}
bekerja seperti yang diharapkan. Pada awalnya saya juga memberikan setTimeoutsolusi dan itu berhasil juga. Namun, batas waktu yang dipilih secara sewenang-wenang terikat untuk memecahkan solusi cepat atau lambat tergantung pada seberapa lambat perangkat host berjalan tentang proses memastikan bahwa elemen target terlihat.