点击其他区域,input输入框不失去焦点

首先监听 documentmousedown 事件,然后判断触发 mousedown 事件的目标元素是不是你不想让input失去焦点的那个元素,是的话就阻止默认事件。
代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>input输入框</title>
<script>
    document.addEventListener("mousedown", function(e){
      if(e.target.id!=="input"){
        e.preventDefault()
      }
    }, false);
    function divClick(){
        console.log("点击了button")
    }
</script>
</head>
<body>
    <input id="input">
    <button onClick="divClick()">按钮</button>
</body>
</html>
当你在网页或应用程序遇到这种情况,通常是在处理表单元素或者可交互区域的聚焦管理。当用户的输入焦点在一个输入框(如文本框、按钮等,统称为"box")上时,如果用户点击了这个输入框之外的地方(即非输入框区域),你可能会想要阻止焦点输入框移出。这可以通过JavaScript事件处理机制来实现: 1. 首先,在input元素上添加`onblur`事件监听器,它会在输入框失去焦点时触发。 ```javascript let inputBox = document.getElementById('yourInputBoxId'); inputBox.addEventListener('blur', function(e) { if (!isClickedOutsideBox(e)) { // 检查是否点击的是input box本身 e.preventDefault(); // 阻止默认的失去焦点行为 return; // 或者手动设置focus回inputBox } }); ``` 2. 然后,你需要创建一个辅助函数`isClickedOutsideBox`来检测用户点击的位置是否在输入框之外。这可能需要获取鼠标点击位置并与输入框的边界进行比较。例如,可以计算点击点到输入框边缘的距离。 ```javascript function isClickedOutsideBox(event) { let clientX = event.clientX; let.clientY = event.clientY; // 检查点击位置是否在输入框区域内... // 可能涉及到坐标计算或几何形状比较 return !isInsideBox(clientX, clientY); } // 检查某个点是否在输入框内(这是一个简化版本,实际可能更复杂) function isInsideBox(x, y) { let inputRect = inputBox.getBoundingClientRect(); return x >= inputRect.left && x <= inputRect.right && y >= inputRect.top && y <= inputRect.bottom; } ``` 这样,当用户点击input box以外的地方,除非直接点击box,否则焦点会离开。请注意,具体的实现细节可能会因应用环境和技术栈的不同而有所差异。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_24581629

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值