Yanıtlar:
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.
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.
autofocus="aufofocus"
? Tüm bağlantılar sadece niteliğini eklemek için söylemek İşletmesi: autofocus
.
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>
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.
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.
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/
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.
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...
<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>
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 :)
Biraz farklı bir sorunum vardı. İstedim autofocus
, ancak placeholder
metnin ç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);
autofocus
Giriş elemanlarını ayarlamak mümkündür
<input type="text" class="b_calle" id="b_calle" placeholder="Buscar por nombre de calle" autofocus="autofocus">
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.