Saya memuat modal bootstrap dinamis dan berisi beberapa input teks. Masalah yang saya hadapi adalah saya ingin kursor fokus pada masukan pertama dalam modal ini, dan ini tidak terjadi secara default.
Jadi saya menulis kode ini untuk melakukannya:
$('#modalContainer').on('show', function () {
$('input:text:visible:first').focus();
});
Tapi sekarang fokus pada masukan sejenak kemudian hilang secara otomatis, mengapa ini terjadi dan bagaimana mengatasinya?
jquery
twitter-bootstrap
Amr Elgarhy
sumber
sumber
setTimeout(function() { /* Your code */ }, 100);
Jawaban:
@scumah memiliki jawaban untuk Anda: Twitter bootstrap - Fokus pada textarea di dalam modal on click
Untuk Bootstrap 2
Pembaruan: Untuk Bootstrap 3
========== Perbarui ======
Menanggapi pertanyaan, Anda dapat menggunakan ini dengan beberapa modals pada halaman yang sama jika Anda menentukan target data yang berbeda, mengganti nama ID modals Anda untuk mencocokkan dan memperbarui ID dari field input form, dan terakhir memperbarui JS Anda agar sesuai dengan yang baru ini. ID:
lihat http://jsfiddle.net/panchroma/owtqhpzr/5/
HTML
JS
sumber
Saya menemukan cara terbaik untuk melakukan ini, tanpa jQuery.
bekerja dengan sempurna.
Ini adalah atribut html5. Didukung oleh semua browser utama.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input
sumber
<input type="text" class="form-control" placeholder="" autofocus>
@Html.TextBoxFor(m => m.UserName, new { @autofocus="" })
tabdindex="-1"
dari modal Anda, namun ini hanya berfungsi sekali. Menutup dan membuka kembali tidak fokus.Jawaban David Taiaroa benar, tetapi tidak berhasil karena waktu untuk "menghilang" dalam modal tidak memungkinkan Anda menetapkan fokus pada masukan. Anda perlu membuat penundaan:
sumber
<input value="" autofocus>
dan bekerja dengan baik untuk saya kali ini, anehKode biasa (di bawah) tidak berfungsi untuk saya:
Saya menemukan solusinya :
lihat lebih lanjut di sini
sumber
Saya mendapat bootstrap itu menambahkan info berikut di halaman mereka:
http://getbootstrap.com/javascript/#modals
sumber
Ini adalah kode sederhana yang akan bekerja paling baik untuk Anda pada semua popup yang memiliki kolom input dengan memfokuskannya
sumber
Menurut saya jawaban yang paling benar, dengan asumsi penggunaan jQuery, adalah konsolidasi aspek dari semua jawaban di halaman ini, ditambah penggunaan acara yang dilewati Bootstrap:
Ini juga akan bekerja mengubah
$(document)
ke$('.modal')
atau menambahkan kelas ke modal yang menandakan bahwa fokus ini harus terjadi, seperti$('.modal.focus-on-first-input')
sumber
coba kode ini, mungkin berhasil untuk Anda
sumber
$(this).find('input:text').first().focus()
Langkah pertama, Anda harus mengatur
autofocus
atribut Anda pada input formulir.Dan kemudian Anda harus menambahkan deklarasi untuk mengatur fokus otomatis input Anda setelah modal Anda ditampilkan.
Coba kode ini:
sumber
Jika Anda hanya ingin memfokuskan otomatis modal apa pun yang terbuka, Anda dapat memasukkan pola atau fungsi lib cuplikan ini yang akan fokus pada masukan pertama:
sumber
jika Anda mencari potongan yang akan bekerja untuk semua modals Anda, dan secara otomatis mencari teks masukan pertama di yang terbuka, Anda harus menggunakan ini:
Jika modal Anda dimuat menggunakan ajax, gunakan ini sebagai gantinya:
sumber
ini adalah solusi paling umum
sumber
Cobalah untuk menghapus properti tabIndex dari modal , ketika input / textbox Anda terbuka. Setel kembali ke sebelumnya , saat Anda menutup input / kotak teks. Ini akan menyelesaikan masalah terlepas dari versi bootstrap , dan tanpa mengorbankan alur pengalaman pengguna .
sumber
Menurut Bootstrap 4 dokumen:
Misalnya:
Tautan .
sumber
Gunakan fokus otomatis untuk mencari elemen formulir yang tepat:
sumber
Ini adalah "#button" yang memanggil bentuk modal,
"#mymodal" adalah bentuk modal,
"#myinput" adalah masukan yang ingin Anda fokuskan
sumber