当前位置:首页 > JavaScript

js实现onblur

2026-03-13 23:42:31JavaScript

实现 onblur 事件的方法

在 JavaScript 中,onblur 事件在元素失去焦点时触发。可以通过多种方式实现该事件监听。

方法一:HTML 属性直接绑定

<input type="text" onblur="console.log('Input lost focus')">

方法二:addEventListener 动态绑定

const inputElement = document.getElementById('myInput');
inputElement.addEventListener('blur', function() {
  console.log('Input lost focus');
});

方法三:通过元素属性赋值

document.getElementById('myInput').onblur = function() {
  console.log('Input lost focus');
};

实际应用示例

表单验证示例

const emailInput = document.getElementById('email');
emailInput.addEventListener('blur', validateEmail);

function validateEmail() {
  const email = this.value;
  if (!email.includes('@')) {
    this.style.borderColor = 'red';
  } else {
    this.style.borderColor = 'green';
  }
}

动态显示/隐藏元素

js实现onblur

const searchBox = document.getElementById('search');
const resultsPanel = document.getElementById('results');

searchBox.addEventListener('focus', () => {
  resultsPanel.style.display = 'block';
});

searchBox.addEventListener('blur', () => {
  setTimeout(() => {
    resultsPanel.style.display = 'none';
  }, 200);
});

注意事项

  • blur 事件会冒泡,而 focusout 事件不会
  • 移动端设备上可能需要额外处理触摸事件
  • 某些情况下可能需要使用 event.stopPropagation() 阻止事件传播

以上方法适用于现代浏览器,包括 IE9+。对于更复杂的场景,可能需要结合其他事件如 focusfocusin 等一起使用。

标签: jsonblur
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…