Javascript 使用jQuery进行电子邮件检查不需要';行不通

Javascript 使用jQuery进行电子邮件检查不需要';行不通,javascript,jquery,ajax-forms,Javascript,Jquery,Ajax Forms,我尝试制作Ajax表单,并尝试在那里进行电子邮件验证。我找到了这个解决方案 但无法在我的脚本中打开它: <script> $('#joinForm').ajaxForm(function() { var testEmail = /^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i; var name = $("input[name=name]") var email = $("input

我尝试制作Ajax表单,并尝试在那里进行电子邮件验证。我找到了这个解决方案

但无法在我的脚本中打开它:

<script> 
    $('#joinForm').ajaxForm(function() {
        var testEmail = /^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i;
        var name = $("input[name=name]")
        var email = $("input[name=email]")
        if(name.val()==''||email.val()=='') {
            $(".notify").show();
            $(".notify p").text('empty');
        } else if(testEmail.test(email.value)) {
            $(".notify").show();
            $(".notify p").text('email is wrong');      
        } else {
            $(".notify").show();
            $(".notify p").text('good');    
        }
    }); 
</script>

$('#joinForm').ajaxForm(函数(){
var testEmail=/^[A-Z0-9.\%+-]+@([A-Z0-9-]+\)+[A-Z]{2,4}$/i;
变量名称=$(“输入[name=name]”)
var email=$(“输入[name=email]”)
如果(name.val()=''| email.val()=''){
$(“.notify”).show();
$(“.notify p”).text('empty');
}else if(testEmail.test(email.value)){
$(“.notify”).show();
$(“.notify p”).text(“电子邮件出错”);
}否则{
$(“.notify”).show();
$(“.notify p”).text('good');
}
}); 

即使电子邮件出错,表单也始终通过验证。空字段的验证工作正常…

如果电子邮件正确,则下一行
else if(testEmail.test(email.value))
将返回true

  $('input').blur(function() {
        var testEmail =/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
        if (testEmail.test(this.value)) alert('passed');
        else alert('failed');
    });

在您的逻辑中,这就是电子邮件错误的地方,这可能是问题所在吗?

这是因为您传递了
email.value
jquery
对象没有名为
value
的参数,因此这将解析为
未定义

.test()
如果未定义而通过,则返回true,因此您的测试将始终通过


请改用
.val()

控制台中是否有错误?@yarons无错误。但表单通过了验证,即使电子邮件是错误的。验证空字段效果很好…您能否更具体地说明“错误”电子邮件的含义?您向it部门发送了哪些您认为应拒绝验证的电子邮件?Thx。。。我需要更加专心。也有人评论将
.value
更改为
.val()
。也谢谢你…请考虑对代码片段如何回答问题添加一点解释,以便OP可以从代码中学习。