Javascript - 从输入中移除焦点

Javascript - Remove the focus from input

我有一个输入显示电子邮件格式无效的消息。当遵守格式时,此消息消失。

$('#id_email.form-control').keyup(function(){
$('span.error-keyup-email').remove();
var inputVal = $(this).val();
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if(!emailReg.test(inputVal)){
  $(this).after('<span style="color:red;" class="error error-keyup-email">Invalid Email Format.</span>');
}
});

代码运行良好。这正是我想要的。

问题: 当我 select 一封我已经由浏览器保存的电子邮件时(通常它会为用户保存电子邮件或伪)。当我不输入我的电子邮件而是 select 我的电子邮件时,即使它是正确的电子邮件格式,消息仍然保留在输入的下方。

你有什么想法吗?

如果您愿意,我可以为您提供更多详细信息,感谢您花时间解决我的问题:)

祝你有愉快的一天:)

//删除else中的错误范围

$('#id_email.form-control').keyup(function(){
    $('span.error-keyup-email').remove();
    var inputVal = $(this).val();
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    if(!emailReg.test(inputVal)){
      $(this).after('<span style="color:red;" class="error error-keyup-email">Invalid Email Format.</span>');
    }
  else{
      $('span.error-keyup-email').remove();
  }
    });

使用失去焦点时自动调用的输入更改事件

$('#id_email.form-control').change(function(){

});

试试这个:

$('#id_email.form-control').on('input', function(){
$('span.error-keyup-email').remove();
var inputVal = $(this).val();
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if(!emailReg.test(inputVal)){
  $(this).after('<span style="color:red;" class="error error-keyup-email">Invalid Email Format.</span>');
}
});

keyup 仅在按下键时触发。 input 当值改变时立即触发

问题是当从浏览器使用自动填充时,您必须以某种方式检测它。不幸的是,在这种情况下不会触发输入的更改事件。

一个可能的解决方案可能是遍历所有onload的输入字段并检查它们是否已填写