电子邮件验证始终失败

时间:2017-11-24 16:20:52

标签: javascript jquery validation

我从不同的StackOverflow答案中复制了最流行的验证方法,但问题电子邮件似乎始终无效。所以第二个条件永远不会执行。我理解错了什么?

function validateEmail(email) {
  var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  return re.test(email);
}
var emailaddress = document.getElementById("email_input").value;
$("#email_input").keydown(function(emailaddress) {
  if (!validateEmail(emailaddress)) {
    $('#enter_valid_email').remove()
    $('<span class="enter_smth_valid" id="enter_valid_email">Enter valid email</span>').insertAfter('#email_input')
  } else {
    alert();
    $('#enter_valid_email').remove()
  }
});

1 个答案:

答案 0 :(得分:0)

传递给keydown的函数是一个事件处理程序 - 它接收一个事件对象作为传递给它的第一个参数(如果需要)。您将其视为文本本身。一个小的改变将解决问题:

$("#email_input").keydown(function() {
   var emailAddress = $(this).val();
  if (!validateEmail(emailAddress )) {
    $('#enter_valid_email').remove()
    $('<span class="enter_smth_valid" id="enter_valid_email">Enter valid email</span>').insertAfter('#email_input')
  } else {
    alert();
    $('#enter_valid_email').remove()
  }
});

您也可以删除上面的这一行 - 它什么都不做:

var emailaddress = document.getElementById("email_input").value;