Web sayfası yüklendiğinde odağı otomatik olarak bir metin kutusuna nasıl ayarlarsınız?


Yanıtlar:


245

Jquery kullanıyorsanız:

$(function() {
  $("#Box1").focus();
});

veya prototip:

Event.observe(window, 'load', function() {
  $("Box1").focus();
});

veya düz javascript:

window.onload = function() {
  document.getElementById("Box1").focus();
};

bunun, yük işleyicilerinde diğerlerinin yerini alacağını unutmayın, bu nedenle değiştirmek yerine onload işleyicilerini eklemenin güvenli bir yolu için google'da addLoadEvent () konusuna bakın.


3
Neden gövde elemanına işleyicileri koymuyorsunuz? Referans var mı? Teşekkürler
Alexander Torstling

7
Çünkü javascript'i HTML'den ayırmak çok daha temiz. HTML'nizdeki görsel öğelere komut dosyası davranışı eklemelisiniz.
Ben Scheirman

94

HTML'de tüm form alanlarının bir autofocusözelliği vardır . Dive Into HTML 5'de iyi bir öğretici var . Ne yazık ki şu anda 10'dan az IE sürümleri tarafından desteklenmemektedir .

HTML 5 özelliğini kullanmak ve bir JS seçeneğine geri dönmek için:

<input id="my-input" autofocus="autofocus" />
<script>
  if (!("autofocus" in document.createElement("input"))) {
    document.getElementById("my-input").focus();
  }
</script>

JS HTML öğesinin altında olduğu için jQuery, onload veya olay işleyicileri gerekmez.

Düzenleme: bir başka avantaj, bazı tarayıcılarda JavaScript kapalı olarak çalışması ve eski tarayıcıları desteklemek istemediğinizde JavaScript'i kaldırabilmenizdir.

Edit 2: Firefox 4 artık autofocusözniteliği destekliyor, IE'yi desteksiz bırakıyor.


3
Nedir autofocus="aufofocus"? Tüm bağlantılar sadece niteliğini eklemek için söylemek İşletmesi: autofocus.
Gerrat

6
XHTML ve HTML4 günlerinde, attribute="value"boolean öznitelikleri için yaygındı . HTML5 "boş özellik sözdizimi" ile birlikte geldi ve fazlalığı bıraktık. Şimdi yapabiliriz<input checked disabled autofocus data-something>
dave1010

Ben bu yaklaşımı seviyorum ... Bu kod girdi aittir ... giriş ve patlama kurtulmak, ilişkili kod orada ... Bu günlerde çok kaybolmak ... Tam daire giderek şimdi basitleştirmek için çalışıyor. ..
Serge

16

Javascript kullanmanız gerekir:

<BODY onLoad="document.getElementById('myButton').focus();">

@ Ben böyle olay işleyicileri eklememeniz gerektiğini belirtiyor. Bu başka bir soru olsa da, bu işlevi kullanmanızı önerir:

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

Ve sonra sayfanıza addLoadEvent çağrısını yapın ve bir işlevi referans alarak odağı istediğiniz metin kutusuna ayarlar.


14

Metin alanına otomatik netleme yazmanız yeterlidir. Bu basit ve şu şekilde çalışır:

 <input name="abc" autofocus></input>

Bu yardımcı olur umarım.


1
bu iyi ama sorun, eğer kayan stile sahip adımlarınız varsa, giriş türü adım 3 veya adım 4 için eskiyse yararlı olmaz esp olmaz
Kobe Bryan

12

Jquery'yi bu şekilde kullanarak kolayca yapabilirsiniz:

<script type="text/javascript">

    $(document).ready(function () {
        $("#myTextBoxId").focus();
    });

</script>

bu işlevi çağırarak $(document).ready().

Bu, DOM hazır olduğunda bu işlevin yürütüleceği anlamına gelir.

HAZIR işlevi hakkında daha fazla bilgi için, bkz. Http://api.jquery.com/ready/


11

Düz vanilya html ve javascript kullanma

<input type='text' id='txtMyInputBox' />


<script language='javascript' type='text/javascript'>
function SetFocus()
{
    // safety check, make sure its a post 1999 browser
    if (!document.getElementById)
    {
        return;
    }

    var txtMyInputBoxElement = document.getElementById("txtMyInputBox");

    if (txtMyInputBoxElement != null)
    {
        txtMyInputBoxElement.focus();
    }
}
SetFocus();
</script>

Orada .net framework ve asp.net 2.0 veya üstü kullanan olanlar için, önemsiz. Çerçevenin eski sürümlerini kullanıyorsanız, yukarıdakine benzer bir javascript yazmanız gerekir.

OnLoad işleyicinizde (visual studio ile birlikte verilen stok sayfası şablonunu kullanıyorsanız genellikle page_load) kullanabilirsiniz:

C #

protected void PageLoad(object sender, EventArgs e)
{
    Page.SetFocus(txtMyInputBox);
}

VB.NET

Protected Sub PageLoad(sender as Object, e as EventArgs)

    Page.SetFocus(txtMyInputBox)

End Sub

(* Not Genel olarak Page_Load olan alt çizgi karakterini işlev kodundan kaldırdım, çünkü bir kod bloğunda düzgün bir şekilde işlenmeyi reddetti!

Bu yardımcı olur umarım.


7

Sayfadaki İlk, görünür, etkin metin alanını seçmenin 'en temiz' yolu olan IMHO, jQuery kullanmak ve bunun gibi bir şey yapmaktır:

$(document).ready(function() {
  $('input:text[value=""]:visible:enabled:first').focus();
});

Umarım yardımcı olur...

Teşekkürler...


6
<html>  
<head>  
<script language="javascript" type="text/javascript">  
function SetFocus(InputID)  
{  
   document.getElementById(InputID).focus();  
}  
</script>  
</head>  
<body onload="SetFocus('Box2')">  
<input id="Box1" size="30" /><br/>  
<input id="Box2" size="30" />  
</body>  
</html>  

5

Genel bir tavsiye olarak, odak adres çubuğundan çalmak değil tavsiye ederim. ( Jeff zaten bundan bahsetti. )

Web sayfasının yüklenmesi biraz zaman alabilir. Bu, odak değişikliğinizin kullanıcının pae URL'sini yazmasından uzun süre sonra gerçekleşebileceği anlamına gelir. Daha sonra fikrinizi değiştirebilir ve sayfanızı yüklerken ve metin kutunuza koymak için odağı çalarken url yazmaya geri dönebilirdi.

Başlangıç ​​sayfam olarak Google'ı kaldırmamı sağlayan tek ve tek sebep bu.

Tabii ki, ağı kontrol ederseniz (yerel ağ) veya odak değişikliği önemli bir kullanılabilirlik sorununu çözmekse, söylediklerimi unutun :)


Bazı durumlarda sana katılıyorum. Ancak, özel durumumda, sadece bir giriş kutusu olan küçük bir div açıyorum. Kullanıcının bir şey girmesi gerekiyor ve odağı hemen ayarlamak için div'i hemen kapatın.
Mark Biek

2

Biraz farklı bir sorunum vardı. İstedim autofocus, ancak placeholdermetnin çapraz tarayıcı olarak kalmasını istedim . Bazı tarayıcılar placeholder, alan odaklanır edilmez metni gizler , bazıları tutar. Ya garip yan etkileri olan çapraz tarayıcı kalmak yer tutucular almak zorunda kaldı, ya da kullanmayı bırak autofocus.

Böylece gövde etiketine yazılan ilk anahtarı dinledim ve bu anahtarı hedef giriş alanına yönlendirdim. Daha sonra ilgili tüm olay işleyicileri işleri temiz tutmak için öldürülür.

var urlInput = $('#Url');

function bodyFirstKey(ev) {
    $('body').off('keydown', bodyFirstKey);
    urlInput.off('focus', urlInputFirstFocus);

    if (ev.target == document.body) {
        urlInput.focus();
        if (!ev.ctrlKey && !ev.metaKey && !ev.altKey) {
            urlInput.val(ev.key);
            return false;
        }
    }
};
function urlInputFirstFocus() {
    $('body').off('keydown', bodyFirstKey);
    urlInput.off('focus', urlInputFirstFocus);
};

$('body').keydown(bodyFirstKey);
urlInput.focus(urlInputFirstFocus);

https://jsfiddle.net/b9chris/qLrrb93w/


0

autofocusGiriş elemanlarını ayarlamak mümkündür

<input type="text" class="b_calle" id="b_calle" placeholder="Buscar por nombre de calle" autofocus="autofocus">

-1

ASP.NET kullanıyorsanız,

yourControlName.Focus()

sunucudaki kodda, sayfaya uygun JavaScript eklenir.

Diğer sunucu tarafı çerçevelerinin eşdeğer bir yöntemi olabilir.


-3

Aşağıdaki kodu kullanın. Benim için çalışıyor

jQuery("[id$='hfSpecialty_ids']").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.