0

我尝试制作 Ajax 表单并尝试在那里进行电子邮件验证。我找到了这个解决方案 http://jsfiddle.net/EFfCa/

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

<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>

即使电子邮件错误,表格也始终通过验证。对空字段的验证效果很好...

4

3 回答 3

1

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

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

于 2015-06-18T14:40:17.057 回答
1

这是因为你的路过email.valuejquery对象没有名为 的参数value,因此这将解析为undefined.

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

改为使用.val()

于 2015-06-18T14:42:25.277 回答
0
  $('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');
    });
于 2015-06-18T14:38:15.580 回答