为什么';我的Javascript电子邮件验证工作
我用jquery和javascript制作了一个简单的表单,但是电子邮件验证(确保其中包含@or 以下是JSFIDLE: 这是验证的代码。它在错误的位置吗为什么';我的Javascript电子邮件验证工作,javascript,jquery,forms,validation,input,Javascript,Jquery,Forms,Validation,Input,我用jquery和javascript制作了一个简单的表单,但是电子邮件验证(确保其中包含@or 以下是JSFIDLE: 这是验证的代码。它在错误的位置吗 function validateForm() { var x = document.forms["signup"]["email"].value; var atpos = x.indexOf("@"); var dotpos = x.lastIndexOf("."); if(atpos < 1 || dotpos &l
function validateForm() {
var x = document.forms["signup"]["email"].value;
var atpos = x.indexOf("@");
var dotpos = x.lastIndexOf(".");
if(atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
$('#answer').html('Not a valid email')
return false;
}
}
函数validateForm(){
var x=document.forms[“signup”][“email”]。值;
var atpos=x.indexOf(“@”);
var dotpos=x.lastIndexOf(“.”);
如果(atpos<1 | | dotpos=x.length){
$('#answer').html('不是有效的电子邮件')
返回false;
}
}
首先,您的代码包含错误,因为您缺少}
。
其次,当单击按钮“加入”时,不要调用“验证表单”
$('#join').click(function () {
var correct = true;
var validEmail = true;
$('input[type="text"]').each(function (indx) {
var $currentField = $(this);
if ($currentField.val() === '') {
$currentField.addClass('empty');
correct = false;
$currentField.one('keydown', function () {
$currentField.removeClass('empty');
});
} else {
$currentField.removeClass('empty');
}
});
function validateForm() {
var x = document.forms["signup"]["email"].value;
var atpos = x.indexOf("@");
var dotpos = x.lastIndexOf(".");
if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
correct = false;
validEmail = false;
}
}
validateForm();
if (correct) {
$('#answer').html('Thank You!');
setTimeout(function () {
$('.inputs').hide("slide", { direction: "up" }, 1000);
}, 2000);
} else {
if(validEmail)
$('#answer').html('Please fill highlighted fields.');
else
$('#answer').html('Not a valid email');
}
});
$('join')。单击(函数(){
var correct=true;
var validEmail=真;
$('input[type=“text”]”)。每个(函数(indx){
var$currentField=$(此值);
如果($currentField.val()=''){
$currentField.addClass('empty');
正确=错误;
$currentField.one('keydown',函数(){
$currentField.removeClass('empty');
});
}否则{
$currentField.removeClass('empty');
}
});
函数validateForm(){
var x=document.forms[“signup”][“email”]。值;
var atpos=x.indexOf(“@”);
var dotpos=x.lastIndexOf(“.”);
如果(atpos<1 | | dotpos=x.length){
正确=错误;
validEmail=假;
}
}
validateForm();
如果(正确){
$('答案').html('谢谢!');
setTimeout(函数(){
$('.inputs').hide(“幻灯片”{direction:“up”},1000);
}, 2000);
}否则{
if(validEmail)
$('#answer').html('请填写突出显示的字段');
其他的
$('#answer').html('不是有效的电子邮件');
}
});
-这对您没有帮助吗?理解起来有点混乱。我只是想找出上面的代码在我当前的代码中的位置。您在最后第三行缺少一个分号。jQuery是Javascript。@MattPsyK-这个答案可能会被接受,并且有445张赞成票,但这是一个错误的答案。该答案中给出的正则表达式将拒绝很多有效的电子邮件地址。像James Mitchell的“至少一个“@”和“一个”。“必需”这样的最小验证更好,因为真正验证电子邮件地址的唯一方法是向其发送电子邮件。非常感谢您的帮助。只需再问一个简单的问题。正如您在代码中看到的(其中显示if(correct)),我把它向上滑动。出于某种原因,即使它说不是一封有效的电子邮件,slideUp()仍然生效。我如何阻止这种情况发生?@jamesmithell:你需要存储validateForm
结果。请看我编辑的答案当前代码没有说“不是有效的电子邮件”,它只是说“请填写突出显示的字段”是,它将首先显示无效电子邮件
,然后替换为请填写突出显示的字段。