2012-07-13 13 views
9

numaralı telefondan contenteditable özniteliğini kullanarak istek üzerine bir metin alanı işlevi görmesini sağlamak (kullanıcıların bir şeyi yeniden adlandırması için). Ancak, autofocus'u da etkinleştirmek istiyorum, böylece kullanıcılar hemen yazmaya başlayabilirler (<div> her zaman başlangıçta contenteditable etkinleştirilmiş).Otomatik odaklamayı, içeriğe dönüştürülebilir bir öğede kullanabilir miyim?

Bu geçerli ve/veya mümkün mü? Yoksa standart bir metin girişine geçmek zorunda mıyım?

cevap

10

Çoğu tarayıcıda JavaScript ile yapmanız gerekecek, bence. Ve iOS'ta çalışmayacak, bu sadece focus()'un gerçek kullanıcı etkileşiminin bir olay işleyicisine (click veya dokunmayla ilgili olay gibi) programatik kullanımına izin veriyor. Ayrıca, sayfada başka girişler varsa, kullanıcının belgenin tamamen yüklenmesinden önce bunlardan birine odaklanabileceğini unutmayın, bu durumda kullanıcının o odağı bulması çok can sıkıcıdır. load olayı tetiklendiğinde altından taşındı, bu nedenle bunu izlemek için 'focus olaylarını kullanmalısınız. Gelecekteki izleyiciler için

<div contenteditable="true" id="editable"></div> 

<script type="text/javascript"> 
    window.onload = function() { 
     document.getElementById("editable").focus(); 
    }; 
</script> 
+2

HTML5 otomatik netleme özniteliği, dönüştürülemeyen öğeleri desteklemeye başlarsa, bu daha iyi bir çözüm olabilir. Ancak şu anda yalnızca form öğeleriyle çalışır: https://developer.mozilla.org/en-US/docs/Web/HTML/Forms_in_HTML#The_autofocus_attribute – Loren

+0

Aslında, 'focus' için' load 'seçeneğine ihtiyacınız yoktur. – Qwertiy

1

:

ben biraz daha zarif bir çözüm olabilir düşünüyorum.

$(window).on("load", function() { 
    $("[autofocus]").focus(); 
}); 

Yani, sayfa yüklendikten sonra ... BAM jQuery 'otofokuslu' özelliğinde olan eleman odaklanır!

Tam olarak ne istediğinizi almak için seçici ile oynayabilirsiniz.

İlgili konular