Yükte Odak Giriş Kutusu


98

İmleç, sayfa yüklemede belirli bir giriş kutusuna nasıl odaklanabilir?

İlk metin değerini de korumak ve imleci girişin sonuna yerleştirmek mümkün müdür?

<input type="text"  size="25" id="myinputbox" class="input-text" name="input2" value = "initial text" />

Yanıtlar:


173

Sorunuzun iki bölümü var.

1) Bir girdi sayfa yüklemesine nasıl odaklanır?

autofocusÖzniteliği girdiye ekleyebilirsiniz .

<input id="myinputbox" type="text" autofocus>

Ancak, bu tüm tarayıcılarda desteklenmeyebilir, bu nedenle javascript kullanabiliriz.

window.onload = function() {
  var input = document.getElementById("myinputbox").focus();
}

2) İmleç giriş metninin sonuna nasıl yerleştirilir?

İşte başka bir SO cevabından ödünç alınan bazı kodlarla jQuery olmayan bir çözüm .

function placeCursorAtEnd() {
  if (this.setSelectionRange) {
    // Double the length because Opera is inconsistent about 
    // whether a carriage return is one character or two.
    var len = this.value.length * 2;
    this.setSelectionRange(len, len);
  } else {
    // This might work for browsers without setSelectionRange support.
    this.value = this.value;
  }

  if (this.nodeName === "TEXTAREA") {
    // This will scroll a textarea to the bottom if needed
    this.scrollTop = 999999;
  }
};

window.onload = function() {
  var input = document.getElementById("myinputbox");

  if (obj.addEventListener) {
    obj.addEventListener("focus", placeCursorAtEnd, false);
  } else if (obj.attachEvent) {
    obj.attachEvent('onfocus', placeCursorAtEnd);
  }

  input.focus();
}

İşte bunu jQuery ile nasıl başaracağıma dair bir örnek.

<input type="text" autofocus>

<script>
$(function() {
  $("[autofocus]").on("focus", function() {
    if (this.setSelectionRange) {
      var len = this.value.length * 2;
      this.setSelectionRange(len, len);
    } else {
      this.value = this.value;
    }
    this.scrollTop = 999999;
  }).focus();
});
</script>

3
Önerilen ilk kod bloğu, imleci mevcut değerin sonuna da yerleştirir, iyi çalışır. Yardımın için minnettarım.
Codex73

46

Sadece bir uyarı - artık bunu destekleyen tarayıcılar için JavaScript olmadan HTML5 ile yapabilirsiniz:

<input type="text" autofocus>

Muhtemelen bununla başlamak ve daha eski tarayıcılar için bir geri dönüş sağlamak için JavaScript ile üzerine oluşturmak istersiniz.


Bunu bilmek güzel, bu imleci zaten giriş alanındaki son konuma getiriyor mu?
Camilo Díaz Repka

1
@ Codex73'ün HTML5'teki yer tutucu özniteliğinin yaptıklarını başarmaya çalıştığını sanmıyorum. İmlecin o anda girişte bulunan değerin sonuna otomatik olarak yerleştirilmesini istiyor gibi görünüyor.
jessegavin

2
Haklısın, bu tam bir çözüm değil. Ancak bu, birkaç şeyi çözer (yüklenen otomatik odaklama ve yer tutucu metin).
David Calhoun

1/2019 itibarıyla, iOS'taki Safari'nin bunu desteklemediğini unutmayın: caniuse.com/#feat=autofocus
sporker


3
function focusOnMyInputBox(){                                 
    document.getElementById("myinputbox").focus();
}

<body onLoad="focusOnMyInputBox();">

<input type="text"  size="25" id="myinputbox" class="input-text" name="input2" onfocus="this.value = this.value;" value = "initial text">

2

Bunu yapmanın bir taşınabilir yolu gibi (sap tarayıcı farklılıklara) özel bir işlev kullanan bu bir .

Ardından , jessegavin'in yazdığı gibi etiketinizin onloadsonunda için bir işleyici <body>ayarlayın:

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

1

İyi çalışıyor...

window.onload = function() {
  var input = document.getElementById("myinputbox").focus();
}

1

çok basit tek satırlık çözüm:

<body onLoad="document.getElementById('myinputbox').focus();">


0

Herhangi bir nedenle BODY etiketine ekleyemiyorsanız, bunu Formdan SONRA ekleyebilirsiniz:

<SCRIPT type="text/javascript">
    document.yourFormName.yourFieldName.focus();
</SCRIPT>

0

Deneyin:

Javascript Pure:

[elem][n].style.visibility='visible';
[elem][n].focus();

Jquery:

[elem].filter(':visible').focus();

0

Bunu js'nizin üstüne ekleyin

var input = $('#myinputbox');

input.focus();

Veya html'ye

<script>
    var input = $('#myinputbox');

    input.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.