为什么';我的Javascript电子邮件验证工作

为什么';我的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

我用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 < 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
结果。请看我编辑的答案当前代码没有说“不是有效的电子邮件”,它只是说“请填写突出显示的字段”是,它将首先显示
无效电子邮件
,然后替换为
请填写突出显示的字段。