Bagaimana cara fokus pada bidang teks input formulir pada pemuatan halaman menggunakan jQuery?


Jawaban:


378

Tetapkan fokus pada bidang teks pertama:

 $("input:text:visible:first").focus();

Ini juga melakukan bidang teks pertama, tetapi Anda dapat mengubah [0] ke indeks lain:

$('input[@type="text"]')[0].focus(); 

Atau, Anda dapat menggunakan ID:

$("#someTextBox").focus();

2
Jika menggunakan dialog, harap lihat jawaban ini jika di atas tidak berfungsi stackoverflow.com/a/20629541/966609
Matt Canty

1
$('input[type="text"]').get(0).focus(); ... bekerja untuk saya
Rav


27

Tentu:

<head>
    <script src="jquery-1.3.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function() {
            $("#myTextBox").focus();
        });
    </script>
</head>
<body>
    <input type="text" id="myTextBox">
</body>

2
Saya sarankan untuk membawa script setelah elemen html.
Ali Sheikhpour

1
Skrip @AliSheikhpour ada dalam pembungkus dom ready sehingga tidak masalah bahwa itu sebelum elemen html, tetapi tidak harus di kepala pula.
Popnoodles

22

Mengapa semua orang menggunakan jQuery untuk sesuatu yang sederhana seperti ini.

<body OnLoad="document.myform.mytextfield.focus();">

15
Karena pertanyaannya ditandai sebagai jQuery.
Adarsh ​​Madrecha

18

Pikirkan tentang antarmuka pengguna Anda sebelum Anda melakukan ini. Saya berasumsi (meskipun tidak ada jawaban yang mengatakan demikian) bahwa Anda akan melakukan ini ketika dokumen dimuat menggunakan ready()fungsi jQuery . Jika pengguna telah memfokuskan pada elemen yang berbeda sebelum dokumen dimuat (yang sangat mungkin) maka sangat menjengkelkan bagi mereka untuk memiliki fokus dicuri.

Anda bisa memeriksa ini dengan menambahkan onfocusatribut di masing-masing <input>elemen Anda untuk merekam apakah pengguna telah fokus pada bidang formulir dan kemudian tidak mencuri fokus jika mereka memiliki:

var anyFieldReceivedFocus = false;

function fieldReceivedFocus() {
    anyFieldReceivedFocus = true;
}

function focusFirstField() {
    if (!anyFieldReceivedFocus) {
        // Do jQuery focus stuff
    }
}


<input type="text" onfocus="fieldReceivedFocus()" name="one">
<input type="text" onfocus="fieldReceivedFocus()" name="two">

2
Perspektif Anda tidak hanya benar secara teknis, tetapi pertimbangan Anda untuk UX terbaik mungkin sangat indah. Bravo!
Folusho Oladipo

12

HTML:

  <input id="search" size="10" />

jQuery:

$("#search").focus();

1
jika menggunakan html5, cukup tambahkan autofocusatribut ke elemen input?
Adarsh ​​Madrecha

Bagaimana atribut itu digunakan, dan apakah itu akan menjadi elemen fokus segera setelah bentuk induknya muncul?
Khom Nazid

8

Maaf karena menabrak pertanyaan lama. Saya menemukan ini melalui google.

Perlu juga dicatat bahwa mungkin untuk menggunakan lebih dari satu pemilih, sehingga Anda dapat menargetkan elemen bentuk apa pun, dan bukan hanya satu jenis tertentu.

misalnya.

$('#myform input,#myform textarea').first().focus();

Ini akan memfokuskan input atau teks pertama yang ditemukannya, dan tentu saja Anda dapat menambahkan pemilih lain ke dalam campuran juga. Hnady jika Anda tidak dapat memastikan jenis elemen tertentu menjadi yang pertama, atau jika Anda menginginkan sesuatu yang agak umum / dapat digunakan kembali.


Saran bagus @Andrew.
DOK

6

Inilah yang saya lebih suka gunakan:

<script type="text/javascript">
    $(document).ready(function () {
        $("#fieldID").focus(); 
    });
</script>

3
Ini cara yang buruk untuk melakukan sesuatu, untuk fokus pada <input> pada pemuatan dokumen, cukup gunakan autofocusatribut yang disediakan oleh HTML5
OverCoder

3

tempat setelah input

<script type="text/javascript">document.formname.inputname.focus();</script>

0

Cara sederhana dan termudah untuk mencapai ini

$('#button').on('click', function () {
    $('.form-group input[type="text"]').attr('autofocus', 'true');
});

0

Baris itu $('#myTextBox').focus()sendiri tidak akan meletakkan kursor di kotak teks, sebagai gantinya gunakan:

$('#myTextBox:text:visible:first').focus();
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.