如何在Web页面加载时自动将焦点设置为文本框?

好吧,这一定是非常容易的,但我真的不知道该怎么做。 如何在Web页面加载时自动将焦点设置为文本框?

有没有一个HTML标签来做到这一点,还是必须通过JavaScript来完成?

任何JavaScript书会告诉你不要把处理程序放在这样的body元素上。

我是你使用jQuery的:

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

或原型:

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

或纯javascript:

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

但请记住,这将取代其他负载处理程序,所以在谷歌查找addLoadEvent()一个安全的方式来追加onload处理程序,而不是取代。

在HTML中,所有表单字段都有一个autofocus属性 。 在Dive Into HTML 5中有一个很好的教程。 不幸的是,它目前不支持低于10的IE版本。

要使用HTML 5属性并回退到JS选项,请执行以下操作:

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

不需要jQuery,onload或事件处理程序,因为JS在HTML元素下面。

编辑:另一个优点是它可以在某些浏览器中closuresJavaScript,并且您可以在不想支持旧浏览器的情况下删除JavaScript。

编辑2:Firefox 4现在支持autofocus属性,只是离开IE不支持。

你需要使用javascript:

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

@Ben指出,你不应该添加这样的事件处理程序。 虽然这是另一个问题,他build议你使用这个function:

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

然后在您的页面上调用addLoadEvent,并引用一个函数,将焦点设置为您所需的文本框。

使用普通的香草html和javascript

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

对于那些使用.net框架和asp.net 2.0或更高版本的人来说,它是微不足道的。 如果你使用的是旧版本的框架,你需要写一些类似于上面的JavaScript。

在您的OnLoad处理程序中(如果使用visual studio提供的库存页面模板,通常是page_load),您可以使用:

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 

(*注意我从函数名称中删除了下划线字符,通常是Page_Load,因为它在代码块中拒绝正确呈现!我在标记文档中看不到如何使下划线呈现未转义状态。

希望这可以帮助。

你可以通过以这种方式使用jquery轻松完成:

 <script type="text/javascript"> $(document).ready(function () { $("#myTextBoxId").focus(); }); </script> 

通过在$(document).ready()调用这个函数。

这意味着这个函数将在DOM准备就绪时执行。

有关READY函数的更多信息,请参阅: http : //api.jquery.com/ready/

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

恕我直言,“最干净”的方式来select页面上的第一个可见,启用文本字段,是使用jQuery,并做这样的事情:

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

希望有帮助…

谢谢…

只需在文本框中写入自动对焦。 这很简单,它的工作原理是这样的:

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

希望这可以帮助。

作为一般build议,我会build议不要从地址栏偷取焦点。 ( 杰夫已经提到过了。 )

网页加载需要一些时间,这意味着在用户键入pae URL后,您的焦点更改可能会发生很长一段时间。 然后,他可以改变主意,回到url打字,而你将加载你的网页,并把重点放在你的文本框。

这是我把Google作为首页的唯一原因。

当然,如果你控制networking(本地networking),或者如果重点改变是解决一个重要的可用性问题,忘记我刚刚说的:)

我有一个稍微不同的问题。 我想要autofocus ,但是,希望placeholder文本保持,跨浏览器。 有些浏览器会在字段集中时隐藏placeholder文本,有些会保留它。 我不得不让占位符保持跨浏览器,这有不可思议的副作用,或停止使用autofocus

于是我倾听了第一个键入主体标签的键,并将该键redirect到目标input字段。 然后所有的事件处理程序都被杀死,以保持干净。

 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/

如果你正在使用ASP.NET,那么你可以使用

 yourControlName.Focus() 

在服务器上的代码中,这将在页面中添加适当的JavaScript。

其他服务器端框架可能有一个等效的方法。

使用下面的代码。 对我来说,这是工作

 jQuery("[id$='hfSpecialty_ids']").focus()