我从不同的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()
}
});
答案 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;