使用jQuery / javascript验证联系表单中的电子邮件

时间:2016-02-24 18:08:21

标签: javascript jquery regex forms if-statement

我正在尝试使用jQuery验证联系表单。名称字段使用此功能正确验证,但无论我做什么,每当我尝试发送时,即使使用有效的电子邮件,我也会在电子邮件输入中收到错误消息。在这一点上,我真的迷失了,真的很感激帮助。我很确定问题出现在电子邮件if正则(!/^S+@S+.S+$/.test(email.val()))中的正则表达式中,但我无法理解。这是我正在使用的功能

$(function(){

    var required = ["name", "email", "message"];
    emptyerror = "Please fill out this field";
    emailerror = "Please enter a valid e-mail";
    email = $("#email");
    errornotice = $("#error");

    $("#contactForm").submit(function() {
      for (var i = 0; i < required.length; i++) {

        var inputField = $('#'+required[i]);

        if ((inputField.val() == "") || (inputField.val() == emptyerror)) {
          inputField.addClass("needsfilled");
          inputField.val(emptyerror);
          errornotice.fadeIn(750);
        }
        else {
          inputField.removeClass("needsfilled");
        }
        if (!/^S+@S+.S+$/.test(email.val())) {
            email.addClass("needsfilled");
            email.val(emailerror);
        }
        if ($(":input").hasClass("needsfilled")) {
          return false;
        }
        else {
          errornotice.hide();
          return true;
        }
      }
    });

    $(":input").focus(function() {
      if ($(this).hasClass("needsfilled")) {
        $(this).val("");
        $(this).removeClass("needsfilled");
      }
    })
});

另外,我知道有更好的方法可以使用jQuery / js验证 not 。但这是一个学校项目,要求用javascript完成,即使它必须过度简化。

谢谢

2 个答案:

答案 0 :(得分:2)

仅在您的代码中使用此方法或正则表达式:

function isValidEmail(pEmail) {
    var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

    if (!filter.test(pEmail)) {
        return false;
    }

    return true;
}

答案 1 :(得分:0)

您使用的电子邮件验证还不够。我建议为此找到更好的RegExps。

这里有更好的RegExp:

from decoder import *
print(decode("12345"))

如果您需要详细信息,请查看此处使用regexp unicode categories的信息。