JQuery kullanarak sayfa yükleme form giriş metin alanına nasıl odaklanır?


238

Bu muhtemelen çok basit, ama birisi bana imlecin sayfa yüklenirken bir metin kutusunda yanıp sönmesini nasıl sağlayabilir?


96
Burada basit sorulara aldırmıyoruz.
DOK

Yanıtlar:


378

İlk metin alanına odaklan:

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

Bu aynı zamanda ilk metin alanını da yapar, ancak [0] 'ı başka bir dizine değiştirebilirsiniz:

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

Veya şu kimliği kullanabilirsiniz:

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

2
Bir iletişim kutusu kullanıyorsanız, yukarıdaki çalışmazsa lütfen bu yanıta bakın stackoverflow.com/a/20629541/966609
Matt Canty

1
$('input[type="text"]').get(0).focus(); ... benim için çalıştı
Rav


27

Elbette:

<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
Komut dosyasını html öğesinden sonra getirmenizi öneririm.
Ali Sheikhpour

1
@AliSheikhpour betiği dom hazır sarmalayıcısının içinde, bu yüzden html öğesinden önce olması önemli değil, ancak yine de kafasında olmamalı.
Popnoodles

22

Neden herkes bu kadar basit bir şey için jQuery kullanıyor?

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

15
Çünkü soru jQuery olarak etiketlendi.
Adarsh ​​Madrecha

18

Bunu yapmadan önce kullanıcı arayüzünüzü düşünün. Belgenin jQuery ready()işlevini kullanarak yüklendiğinde bunu yapacağınızı varsayıyorum (cevapların hiçbiri böyle söylemedi) . Bir kullanıcı belge yüklenmeden önce farklı bir öğeye odaklanmışsa (ki bu tamamen mümkündür), o zaman odağın çalınması son derece sinir bozucudur.

Bunu , kullanıcının zaten bir form alanına odaklanıp odaklanmadığını kaydetmek onfocusiçin <input>öğelerinizin her birine özellikler ekleyerek ve sonra varsa odağı çalmayarak kontrol edebilirsiniz:

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
Perspektifiniz sadece teknik olarak doğru değil, aynı zamanda mümkün olan en iyi UX için düşünmeniz enfes. Bravo!
Folusho Oladipo

12

HTML:

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

jQuery:

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

1
html5 kullanıyorsanız autofocus, giriş elemanına nitelik mi eklemeniz yeterlidir ?
Adarsh ​​Madrecha

Bu özellik nasıl kullanılır ve üst formu görünür görünmez odaklanılan öğe olur mu?
Khom Nazid

8

Eski bir soruya çarptığım için üzgünüm. Bunu google üzerinden buldum.

Ayrıca, birden fazla seçici kullanmanın mümkün olduğunu, böylece yalnızca belirli bir türü değil, herhangi bir form öğesini hedefleyebileceğinizi de belirtmek gerekir.

Örneğin.

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

Bu, bulduğu ilk girdiyi veya metin alanını odaklar ve elbette karışıma başka seçiciler de ekleyebilirsiniz. Hnady, ilk olarak belirli bir öğe türünden emin olamıyorsanız veya biraz genel / yeniden kullanılabilir bir şey istiyorsanız.


Mükemmel öneri @Andrew.
DOK

6

Ben kullanmayı tercih budur:

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

3
Bir şeyler yapmanın kötü bir yoludur, belge yüküne <giriş> 'e odaklanmak için, autofocusHTML5 tarafından sağlanan özelliği kullanın
OverCoder

3

girişten sonra yer

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

0

Bunu başarmanın basit ve en kolay yolu

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

0

Yalnızca satır $('#myTextBox').focus()imleci metin kutusuna koymaz, bunun yerine şunu kullanın:

$('#myTextBox:text:visible:first').focus();
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.