使用 jquery 验证电子邮件后添加 class

adding a class after email is validated using jquery

我正在尝试使用 jQuery 在表单字段中进行电子邮件验证

$(document).ready(function() {
    var email = new RegExp("[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$");
    var value = $("#email_address").val();

    $("#email_address").on("keypress", function() {
        if(email.test(value)) {
            $("#email_address").parent().addClass("has-success");
        }
    });
});

但是,has-success class 没有被添加。我已经在控制台中单独尝试了每一行代码,它们似乎都是 doing/pointing 正确的。就是凑在一起的时候好像不行。

您在 jQuery 的 DOM 上加载值已准备就绪,再也不会加载它。

您需要测试 当前 值,而不是 DOM 准备就绪时的值,大致为:

$("#email_address").on("keypress", function() {
    if(email.test($(this).val())) {
        $("#email_address").parent().addClass("has-success");
    }
});

不相关,但我个人会将电子邮件测试包装在一个函数中,因此您可以更自然地阅读它,例如 validEmail(xxx) 等,而不是说 email.test(xxx)