← jQuery blur()事件:元素失去焦点时的处理 jQuery select()事件:检测文本选中动作 →

jQuery focus()事件:元素获得焦点时的处理

原创 2026-04-30 jQuery 已有人查阅

上一篇讲了 blur(),现在来看它的搭档——focus()。当用户点击输入框、按 Tab 键导航到某个元素、或者用鼠标选中一个可交互的区域时,focus 事件就会被触发。focus() 方法专门用来捕获这个“获得焦点”的时刻。

浏览器本身会给获得焦点的元素一些默认的视觉反馈,比如输入框外面出现蓝色边框。但如果想要更明显的提示效果——比如高亮边框、显示操作提示文字、弹出格式说明——就需要用 focus() 来定制。

focus 事件主要用在表单元素(<input><select><textarea>)和链接(<a>)上,这些是可聚焦元素中使用频率比较高的几类。

语法形式

触发 focus 事件:

$(selector).focus()

程序化地让选中元素获得焦点,同时触发已绑定的 focus 处理函数。比如页面加载完成后自动让搜索框获得焦点,省去用户手动点击。

绑定 focus 事件:

$(selector).focus(function(){
    // 元素获得焦点时执行的代码
})

给元素绑定一个获得焦点时执行的回调函数,这是日常开发中使用频率较高的写法。

基础示例:获得焦点时显示提示文字

下面这个例子展示了 focus() 的绑定用法。两个输入框分别对应姓名和密码,当用户点击输入框获得焦点时,旁边会显示提示文字,然后渐隐消失。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>focus() 基础示例</title>
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
    <style>
        .hint {
            display: none;
            color: #888;
            margin-left: 10px;
            font-size: 14px;
        }
    </style>
</head>
<body>
    <p>
        <input type="text" id="nameInput" placeholder="请输入姓名">
        <span class="hint">请输入您的真实姓名</span>
    </p>
    <p>
        <input type="password" id="pwdInput" placeholder="请输入密码">
        <span class="hint">密码长度至少 6 位</span>
    </p>

    <script>
        $("input").focus(function(){
            $(this).next(".hint").css("display", "inline").fadeOut(2000);
        });
    </script>
</body>
</html>

点击任意一个输入框,旁边的提示文字会先显示出来,然后在 2 秒内渐隐消失。这里用 $(this).next(".hint") 来定位当前输入框对应的提示元素,保证每个输入框显示各自专属的提示信息。这种提示方式在登录表单和注册页面里很常见,用户体验比一直显示大段文字要好。

进阶示例:阻止用户在特定输入框中输入

有时候需要让某个输入框不可编辑,但又不想用 disabled 属性(因为 disabled 会改变元素外观且无法获取焦点)。这时候可以用 focus() 配合 blur() 来实现——当用户点击输入框获得焦点时,立刻让它失焦,达到“看得见但点不进去”的效果。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>focus 与 blur 阻止输入示例</title>
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
    <p>
        <input type="text" id="readonlyInput" value="此输入框不可编辑" style="background-color:#f0f0f0;">
        <span style="color:#888;margin-left:8px;">点击尝试输入</span>
    </p>
    <p>
        <input type="password" id="normalPwd" placeholder="此输入框可以正常输入">
    </p>

    <script>
        $("input[type=text]").focus(function(){
            $(this).blur();
        });
    </script>
</body>
</html>

点击第一个输入框,它刚获得焦点就立刻失焦了,光标无法停留在里面,自然也无法输入内容。第二个密码输入框不受影响,正常使用。这种手法在一些特殊场景下有用——比如某个字段的值需要由弹窗选择器来填充,不允许手动输入,但又希望输入框看起来是可交互的。不过需要说明的是,这种方法并非万无一失,用 Tab 键快速连续切换焦点时可能会出现视觉闪烁。如果需求是纯粹阻止输入,用 readonly 属性配合样式控制通常是更稳妥的办法。

focus 事件的实际应用场景

focus() 在日常开发中的使用频率很高,常见场景包括:

  • 输入框提示文字: 获得焦点时显示格式要求或操作提示,失焦时隐藏。

  • 自动选中内容: 获得焦点时用 select() 方法自动全选输入框内容,方便用户直接覆盖输入。

  • 样式高亮: 改变边框颜色或背景色,让用户清楚知道当前操作位置。

  • 自动滚动到可视区域: 移动端开发中,输入框获得焦点时配合滚动,避免被键盘遮挡。

  • 页面初始化默认焦点: 在搜索页面或登录页面加载完成后自动让输入框获得焦点,减少用户点击操作。

本节课程知识要点

  • focus() 用于处理元素获得焦点的时刻,两种用法:不传参触发 focus,传回调函数绑定 focus。

  • 与 blur() 成对使用,构成完整的焦点进出管理机制。

  • 主要应用于表单元素(<input><select><textarea>)和链接(<a>)。

  • focus() 配合 blur() 可实现“禁止输入”效果,但不如 readonly 属性语义清晰,需根据场景选用。

  • 页面初始化时调用 focus() 可设置默认焦点,提升常用功能的操作效率。

focus() 和 blur() 是一对互补的焦点事件方法,一个管进入,一个管离开。它们构成了 jQuery 表单交互的核心能力——从输入提示、实时校验到焦点管理,几乎所有的表单交互逻辑都围绕着这两个事件展开。把这两个方法的触发时机、配合方式理解透彻,写表单相关的交互代码会顺手很多,用户体验也会更流畅自然。

← jQuery blur()事件:元素失去焦点时的处理 jQuery select()事件:检测文本选中动作 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号