Javascript 阻止焦点调用模糊功能
我正在验证电子邮件地址,并在验证失败时创建警报消息。当用户单击警报消息上的“确定”时,焦点应返回到电子邮件地址文本框 我面临着焦点功能调用模糊的问题,模糊功能反过来又调用焦点。它在无限循环中运行。请参考下面的例子- 一旦焦点位于电子邮件地址内,我需要允许用户输入电子邮件地址并在onBlur功能上验证它。使用Javascript 阻止焦点调用模糊功能,javascript,html,Javascript,Html,我正在验证电子邮件地址,并在验证失败时创建警报消息。当用户单击警报消息上的“确定”时,焦点应返回到电子邮件地址文本框 我面临着焦点功能调用模糊的问题,模糊功能反过来又调用焦点。它在无限循环中运行。请参考下面的例子- 一旦焦点位于电子邮件地址内,我需要允许用户输入电子邮件地址并在onBlur功能上验证它。使用setTimeout()控制onBlur input.onblur = function() { samp.innerHTML="Called blur"; var validat
setTimeout()
控制onBlur
input.onblur = function() {
samp.innerHTML="Called blur";
var validating = false; //<-- IMPORTANT
if (!input.value.includes('@')) {
input.classList.add('invalid');
if(validating == false) {
validating = true
alert('Please enter a correct email.');
setTimeout(function(){
input.focus();
validating = false;
}, 1);
}
}
};
input.onfocus = function() {
samp.innerHTML="Called focus";
if (this.classList.contains('invalid')) {
this.classList.remove('invalid');
error.innerHTML = "";
}
};
input.onblur=function(){
samp.innerHTML=“调用模糊”;
var validating=false;//input.onblur=function(e){e.preventDefault()}
我看到这个解决方案正在工作,但是,当我聚焦到另一个窗口并返回到Chrome浏览器时,它进入无限循环,因为焦点调用blur和blur作为代码来聚焦。
input.onblur = function() {
samp.innerHTML="Called blur";
var validating = false; //<-- IMPORTANT
if (!input.value.includes('@')) {
input.classList.add('invalid');
if(validating == false) {
validating = true
alert('Please enter a correct email.');
setTimeout(function(){
input.focus();
validating = false;
}, 1);
}
}
};
input.onfocus = function() {
samp.innerHTML="Called focus";
if (this.classList.contains('invalid')) {
this.classList.remove('invalid');
error.innerHTML = "";
}
};