# .focus()

所属分类：事件 > 表单事件 | 表单 英文文档：.focus()

## .focus( handler(eventObject) )返回: jQuery

描述: 为 JavaScript 的 "focus" 事件绑定一个处理函数，或者触发元素上的 "focus" 事件。

- #### 添加的版本: 1.0.focus( handler(eventObject) )

  - handler(eventObject)
    类型: Function()
    每次事件触发时会执行的函数。

- #### 添加的版本: 1.4.3.focus( [eventData ], handler(eventObject) )

  - eventData
    类型: Object
    一个对象，它包含的数据键值对映射将被传递给事件处理程序。
  - handler(eventObject)
    类型: Function()
    每次事件触发时会执行的函数。

- #### 添加的版本: 1.0.focus()

  - 这个方法不接受任何参数。

这个函数的前两个用法是 `.bind('focus', handler)` 的快捷方式，第3个不带参数的用法是 `.trigger('focus')` 的快捷方式。

当一个元素获得焦点时，`focus`事件被触发。此事件起初适用于有限的元素，比如表单元素（`<input>`, `<select>`等）和链接元素（`<a href>`）。在最近版本的浏览器中，该事件可以扩展到所有包括通过显式设置`tabindex`属性的元素类型。一个元素可以通过键盘命令获得焦点，如Tab键，或按鼠标点击的元素。

获取焦点的元素，浏览器一般会以某种高亮方式来显示，比如，点线围绕的元素。该事件通常用于判断哪个元素是最先接收键盘相关事件的元素。

> 试图将焦点设置到一个隐藏的元素在Internet Explorer中导致错误。请注意，`.focus()`只能在可见元素上使用。要在一个元素执行focus事件却又不想让这个元素获取焦点的话， 请使用`.triggerHandler("focus")` 来代替 `.focus()`。

举例来说，请看下面的HTML：

1 2 3 4 5 6 7 |
    <form>  <input id="target" type="text" value="Field 1" />  <input type="text" value="Field 2" /></form><div id="other">  Trigger the handler</div>

这个事件处理函数可以绑定到第一个 input field

1 2 3 |
    $('#target').focus(function() {  alert('Handler for .focus() called.');});

现在，如果点击第一个表单域或按tab键从其他地方切换到这个表单域，警报显示：

Handler for .focus() called.

我们可以点击另一个元素触发这个事件：

1 2 3 |
    $('#other').click(function() {  $('#target').focus();});

这些代码执行后，点击Trigger the handler也提醒消息。

`focus`事件不会在Internet Explorer中冒泡。因此，用`focus`事件委派，跨浏览器无法正常工作。但是，在1.4.2版本， jQuery的解决此限制，将`focus`模拟为`focusin` 事件，可以使用`.live()` 和 `.delegate()`的委派方法，解决了跨浏览器的问题.

## 例子:

#### Example: 触发 focus 事件。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
    <!DOCTYPE html><html><head>  <style>span {display:none;}</style>  <script src="https://code.jquery.com/jquery-latest.js"></script></head><body>  <p><input type="text" /> <span>focus fire</span></p><p><input type="password" /> <span>focus fire</span></p><script>$("input").focus(function () {  $(this).next("span").css('display','inline').fadeOut(1000);});</script> </body></html>

#### Demo:

#### Example: 阻止用户在文本框中写任何内容：

1 2 3 |
    $("input[type=text]").focus(function(){  $(this).blur();});

#### Example: 在页面显示时，将焦点移到 id 为 'login' 的 input 元素上：

1 2 3 |
    $(document).ready(function(){  $("#login").focus();});