我专注于输入时想要一个警告弹出窗口。它弹出正确,但是当我点击“确定”时或者' x'即取消,它无限循环,永不关闭。
$('input').focus(function () {
alert('hello');
});
答案 0 :(得分:2)
这是因为当alert
关闭时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')
}
})
变量 - 每次触发处理程序时反转该值。 E.g ...
^[^>]*(?:%>[^>]*)*$
答案 1 :(得分:0)
你可以尝试像
那样的黑客攻击$(document).on("focus", 'input:not(.unFocus)', function() {
alert('hello');
$('input').addClass('unFocus');
setTimeout(function() {
$('input').removeClass('unFocus');
}, 10);
});
这可能不是理想的做法,但它有效:)