gpt4 book ai didi

javascript - 在 focus() 事件中调用时,alert() 函数正在循环

转载 作者:行者123 更新时间:2023-11-29 21:01:29 25 4
gpt4 key购买 nike

我想要在专注于输入时弹出警报。它会正确弹出,但是当我单击“确定”或“x”(即取消)时,它会无限循环并且永远不会关闭。

$('input').focus(function () {
alert('hello');
});

最佳答案

这是因为当 alert 关闭时 input 再次获得焦点(这是出现时的新焦点 - 注意按钮周围的轮廓对话?)

如果你只想让警报显示一次,你也许可以写一些类似这样的东西:

let hasShownAlert = false

$('input').focus(function () {
if (!hasShownAlert) {
hasShownAlert = true
alert('hello')
}
})

当然你可以用状态容器或其他东西来改进它,但这是你可以实现它的最简单的方法。 (注意:hasShownAlert 变量必须在 onfocus 处理程序之外定义,否则它将被垃圾收集器清除。)


更新:因此,如果您不希望它只显示一次,您可以做几件事。第一个更简单,将监听 click 事件,而不是焦点。第二种方法是设置一个 didShowAlert 变量——每次触发处理程序时反转值。例如...

let didShowAlert = false
$('input').on('focus', (ev) => {
if (didShowAlert) {
didShowAlert = false
} else {
didShowAlert = true
alert('hello')
}
})

关于javascript - 在 focus() 事件中调用时,alert() 函数正在循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46254495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com