【问题标题】:Email check with jQuery doesn't work使用 jQuery 进行电子邮件检查不起作用
【发布时间】:2015-06-18 14:22:20
【问题描述】:

我尝试制作 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>

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

【问题讨论】:

  • 控制台是否出现任何错误?
  • @yarons 没有错误。但是表单通过验证,即使电子邮件是错误的。对空字段的验证效果很好...
  • 您能否更具体地说明您所说的“错误”电子邮件是什么意思?您认为验证应该拒绝哪些电子邮件?

标签: javascript jquery ajax-forms


【解决方案1】:

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

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

【讨论】:

  • 谢谢...我需要更加专心。也有评论将.value 更改为.val()。也谢谢你...
【解决方案2】:

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

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

请改用.val()

【讨论】:

    【解决方案3】:
      $('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');
        });
    

    【讨论】:

    • 请考虑添加一些关于您的代码 sn-p 如何回答问题的解释,以便 OP 可以从您的代码中学习。
    猜你喜欢
    • 2022-10-24
    • 1970-01-01
    • 2011-06-06
    • 2020-04-22
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    相关资源
    最近更新 更多