【js】alert事件点击确认后指定input恢复焦点

本文介绍了一种在弹出警报后自动使特定输入框获得焦点的方法。通过设置一个名为refocus的对象来标记需要恢复焦点的输入框,并利用jQuery监听窗口点击事件来实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前有那么一个需求,在点击alert之后让input获取焦点,试了很久搞出这个方法,有更好的方法请留言哈哈


在需要生效的页面的js中创建一个js对象

var refocus = new Object();
refocus.status = 0; //初始化为0,表示不生效
refocus.id = ''; //需要恢复焦点的元素id

然后新建一个方法.当浏览器发生点击事件,那么检查alert框是否存在,不存在的情况需要检查是否要启动恢复焦点,这个由标识符,refoucs对象的status值决定,当为0时不执行,为1的时候执行,操作的对象就是id所在的元素.

function setFocus() {
	$(window).on('click', function() {
		//判断alert框是否存在,这里的can是alert的父元素,实际父元素以自己F12看到的为准
		var alertExist = $('#can').children().length > 0; 
		if (!alertExist) {
			if (refocus.status == 1) { //我这里设定的1是需要恢复焦点的标识符
				$('#'+refocus.id).val('').focus();
				refocus.status = 0;
			}
		}
	});
}

然后在你需要生效的地方后面改变refoucs对象即可

alert('我是一个警告框');
//警告框后面修改
refocus.status = 1;
refocus.id='xxx'; //需要恢复焦点的input的id

//也可以直接设定一个方法
function setRefocus(id) {
	refocus.status = 1;
	refocus.id = id;
	}
//然后在alert后面直接调用这个方法即可
alert('我是一个警告框');
setRefocus('xxx');

我这里的设计是只有一个生效的标识符,直接让input清空,然后恢复焦点,也可以细分多种标识符,可以只恢复焦点,不清空,这个是跟着需求走的.

### 关于 `onblur` 事件 在 HTML 中,`onblur` 是一种用于检测元素失去焦点的 DOM 事件。当用户从某个可聚焦的元素(如 `<input>` 或其他表单控件)移开时触发该事件[^2]。 以下是关于如何使用 `onblur` 的详细说明以及代码示例: #### 基本语法 ```html <input type="text" onblur="handleBlur()"> ``` 上述代码表示每当输入失去焦点时会调用名为 `handleBlur()` 的 JavaScript 函数。 --- #### 完整代码示例 以下是一个完整的 HTML 和 JavaScript 结合使用的例子来演示 `onblur` 的功能: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>OnBlur Example</title> <script> function handleBlur() { alert('Input lost focus!'); } </script> </head> <body> <label for="example">Enter text:</label> <input id="example" type="text" onblur="handleBlur()" /> </body> </html> ``` 在这个示例中,当用户点击输入外的地方或者切换到另一个窗口时,浏览器会弹出提示显示 “Input lost focus!”。 --- #### Angular 中的应用 如果是在现代架比如 Angular 中实现类似的逻辑,则可以利用模板绑定的方式处理 `blur` 事件。例如,在 Angular 组件中定义一个函数并将其绑定至 `(blur)` 属性上即可完成相同的功能[^3]。 ```typescript // app.component.ts export class AppComponent { onBlurHandler(event: Event): void { console.log((event.target as HTMLInputElement).value); } } ``` 对应的模板文件如下所示: ```html <!-- app.component.html --> <input (blur)="onBlurHandler($event)" placeholder="Type something..." /> ``` 这里通过 `$event` 参数传递当前发生的事件对象给回调方法以便进一步操作数据流或状态管理。 --- #### 执行效果 无论是原生方式还是基于前端架的方法都能达到监听目标元素何时被取消选中的目的,并据此做出响应动作,像验证字段有效性、保存临时更改等都是常见应用场景之一[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值