使用jQuery验证密钥上的电子邮件地址

Lia*_*iam 3 javascript jquery

我试图验证一个电子邮件地址onkeyup只有以下似乎永远不会返回有效,

任何人都可以看到我可能出错的地方?我只有1个输入,我的.first()选择器正确定位...

$('.newsletter-signup input').first().keyup(function(){
    $email = $('.newsletter-signup input').first();
     function validateEmail($email) {
      var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
      if( !emailReg.test( $email ) ) {
        alert('foo');
      } else {
        alert('bar');
      }
    }
});
Run Code Online (Sandbox Code Playgroud)

pal*_*aѕн 7

您的代码有点不正确,您可以这样做:

$('.newsletter-signup input').first().keyup(function () {
    var $email = this.value;
    validateEmail($email);
});

function validateEmail(email) {
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    if (!emailReg.test(email)) {
        alert('foo');
    } else {
        alert('bar');
    }
}
Run Code Online (Sandbox Code Playgroud)

在你的代码中:

$email = $('.newsletter-signup input').first();
Run Code Online (Sandbox Code Playgroud)

你只获得第一个输入的jQuery对象而不是值.因此,验证根本不起作用.

因此,为了获得input您可以使用的元素的值:

 var $email = this.value;
Run Code Online (Sandbox Code Playgroud)

因为this这里指的是$('.newsletter-signup input').first().所以需要再次调用它,然后从中获取它的值.您可以直接使用this.value.