我想要在专注于输入时弹出警报。它正确弹出,但是当我单击“确定”或“x”(即取消)时,它会无限循环并且永远不会关闭。
$('input').focus(function () {
alert('hello');
});
最佳答案
这是因为当 alert
关闭时,input
再次获得焦点(这是它出现时的新焦点 - 请注意按钮周围的轮廓)对话?)
如果您只想让警报显示一次,您也许可以编写类似于以下内容的内容:
let hasShownAlert = false
$('input').focus(function () {
if (!hasShownAlert) {
hasShownAlert = true
alert('hello')
}
})
当然,您可以使用状态容器或其他东西来改进这一点,但这是实现它的最简单的方法。 (注意:hasShownAlert
变量必须在 onfocus
处理程序之外定义,否则它将被垃圾收集器清除。)
更新:因此,如果您不想让它只显示一次,您可以执行以下操作。第一个更简单,将监听点击事件,而不是焦点。第二种方法是设置一个 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/