JavaScript odağı HTML form öğesine ayarlar


332

İçinde metin kutusu olan bir web form var. Varsayılan olarak odağı metin kutusuna nasıl ayarlayabilirim?

Bunun gibi bir şey:

<body onload='setFocusToTextBox()'>

peki birisi bana bu konuda yardım edebilir mi? JavaScript ile metin kutusuna odaklamayı nasıl yapacağımı bilmiyorum.

<script>
function setFocusToTextBox(){
//What to do here
}
</script>

21
Kadar basit document.getElementById('your_text_box_id').focus();.
Teemu

Yanıtlar:


576

Bunu yap.

Elemanınız böyle bir şeyse ..

<input type="text" id="mytext"/>

Senaryonuz

<script>
function setFocusToTextBox(){
    document.getElementById("mytext").focus();
}
</script>

3
Web API'sinin diğer bölümlerini (ör Document.forms. Document.getelementsByTagNameVeya Node.childNodes) kullanarak belgeyi taramanız ve bilinen bir belge yapısına güvenmeniz veya öğeye özgü bazı özelliklere bakmanız gerekir.
peterph

40
Ya da bariz cevap ... bir kimlik verin;)
İlgili

4
Bir kimlik kullanılmasına karşı tavsiye ederim çünkü fazla belirtilmiş. Bunun yerine adı ve hatta bir sınıfı kullanın. Bu durumda, giriş öğesine referans almak için document.querySelector ("[name = 'myText']") veya document.querySelector (". MyText") kullanabilirsiniz.
Chris Love

12
@ChrisLove İlginç tavsiyeler. Neden bir kimliğe sahip olmak "fazla tanımlanmış" ve bununla ilgili sorun tam olarak nedir? Daha basit, daha kesin ve bulmak için kod, bir kimlikle biraz daha hızlı olacaktır. Mümkünse, yapılacak en açık ve mantıklı şey gibi geliyor bana.
PandaWood

4
@ChrisLove bu bir CSS seçicisini fazla belirtmiyor, bir HTML ID özelliği ayarlıyor - özgüllük, CSS işlemenin DOM seçicilerini ayrıştırma biçiminde bir sorun değil, ID ve sınıf özelliklerinin HTML'de nasıl çalıştığı ile ilgili bir sorun değil. CSS'yi JS'ye bağlamak için olduğu gibi aynı DOM seçicilerini kullanmanız önerilmez, yani tarif ettiğiniz farklılığı koruyabilirsiniz
Toni Leigh

142

Değeri ne olursa olsun, autofocusözelliği HTML5 uyumlu tarayıcılarda kullanabilirsiniz. Sürüm 10'dan itibaren IE üzerinde bile çalışır.

<input name="myinput" value="whatever" autofocus />

51
Unutmayın, bu yalnızca sayfa ilk yüklendiğinde odağı ayarlamak için çalışır; odağı girdiye yanıt olarak daha sonra ayarlamak için kullanılamaz.
Martin Carney

Korkarım otomatik odaklama özelliği, uyumlu değildir değilim IOS Safari (eğer caniuse.com/#search=autofocus .focus () Opera Mini (sadece uyumsuz iken) caniuse.com/#search=focus )
lfrodrigues

3
Konsoldan odaklanmaya çalışıyorsanız, bunun mümkün olmadığını unutmayın!
Veya Choban

65

Genellikle bir metin kutusuna odaklandığımızda, görünüme de geçmeliyiz

function setFocusToTextBox(){
    var textbox = document.getElementById("yourtextbox");
    textbox.focus();
    textbox.scrollIntoView();
}

İşe yarayıp yaramadığını kontrol edin.


2
Eğer alan ekran dışında ise bu daha küçük bir ekranda gerçek bir baş ağrısı olabilir :-)
Toni Leigh

Sabitlenmiş bir başlık çubuğunuz varsa, textbox.scrollIntoView (false) öğesini kullanmanız gerekebilir; bu, öğeyi üst yerine alt kısma ayarlar.
DeadlyChambers

30

Kodunuz:

<input type="text" id="mytext"/>

Ve JQuery kullanıyorsanız, bunu da kullanabilirsiniz:

<script>
function setFocusToTextBox(){
    $("#mytext").focus();
}
</script>

Öncelikle girişi çizmeniz gerektiğini unutmayın $(document).ready()


11
Temel soruda jQuery'nin hiçbir etkisi olmadığı için bunu reddettim. OP tamamen javascript kalmak istiyordu
Fallenreaper

11
Sebebin var, yanlış gittim, ama yine de yardımcı olduğunu düşünüyorum.
Richard Rebeco

4
Ben jvuery zaten kullanılan projelerde ve jQuery seçim nesneleri olarak öğeleri, vanilya JS kullanmak yerine tutarlı olmak daha iyidir çünkü bunu upvoting .
paradite

8
@Fallenreaper Stackoverflow'un egregiously sloppy, no-effort-expended post, or an answer that is clearly and perhaps dangerously incorrectyardım merkezine göre aşağı oylar içindir . Bunu bu kategorilerin yakınında hiçbir yerde bulamıyorum. Yardım OP ile sınırlı değil, değil mi?
Gellie Ann

@GellieAnn Bu bir cevap olsa da, OP sorununun kapsamı dışındadır. Vanilya javascript'i kullanmasının bir nedeni var ve diğer çerçevelerden bahsedebilir ve birine yol göstermek için işaretçiler veya ipuçları verebilir ve nedenini akılda tutarak, yanıtı yine de sorulan sorunun sınırları içinde çözmelisiniz. Bu nedenle, aşağı oylamın yanındayım.
Fallenreaper

20

Düz Javascript için aşağıdakileri deneyin:

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

3

Sadece bunu kullanırdım:

<html>
  <head>
    <script type="text/javascript">
      function focusFieldOne() {
        document.FormName.FieldName.focus();
      }
    </script>
  </head>

  <body onLoad="focusFieldOne();">
    <form name="FormName">
      Field <input type="text" name="FieldName">
    </form>
  </body>
</html>

Bununla birlikte, HTML 5'te otomatik odaklama özelliğini kullanabilirsiniz.

Lütfen dikkat: Sorulan örneği ve bunu hala okuyanlar için daha yeni, daha kolay güncellemeyi gösteren bu eski iş parçacığını güncellemek istedim. ;)


1

Daha önce de belirtildiği gibi, document.forms da çalışır.

function setFocusToTextBox( _element ) {
  document.forms[ 'myFormName' ].elements[ _element ].focus();
}

setFocusToTextBox( 0 );
// sets focus on first element of the form

AFAIK Formunda "ad" özelliği yok
Marecky

Formların uzun süredir "adları" vardı ve HTML5'te de hala var. Bkz. W3.org/TR/html5/forms.html#the-form-element
Mac

1

Eğer, <input>ya da <textarea>nitelik vardır id=mytextsonra kullanmak

mytext.focus();


0

window.onload başlangıçta odaklanmaktır, metin alanının dışını tıklatırken bulanıklaştırmak veya metin alanı bulanıklığından kaçınmaktır.

    <textarea id="focus"></textarea>
    <script>
     var mytexarea=document.getElementById("focus");
    window.onload=function()
    {

    mytexarea.focus();

    }

mytextarea.onblur=function(){

mytextarea.focus();

}
    </script>
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.