返回介绍

.focus()

发布于 2017-09-11 14:07:54 字数 3347 浏览 1285 评论 0 收藏 0

所属分类:事件 > 表单事件 | 表单

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

<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

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

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

Handler for .focus() called.

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

$('#other').click(function() {
  $('#target').focus();
});

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

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

例子:

Example: 触发 focus 事件。

<!DOCTYPE html>
<html>
<head>
  <style>span {display:none;}</style>
  <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.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>

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

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

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

$(document).ready(function(){
  $("#login").focus();
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文