【问题标题】:Check an array of email addresses with jQuery使用 jQuery 检查一组电子邮件地址
【发布时间】:2012-05-11 18:25:15
【问题描述】:

我正在使用 jQuery,并想检查电子邮件地址是否托管在免费电子邮件服务域(即 Yahoo、gmail、hotmail 等)中。

下面的代码可以做到这一点,但不幸的是,我不知道将域名放入数组中的语法,现在我可以检查(无需额外的 if 语句)电子邮件是否(在这种情况下)仅由 Yahoo 托管。

有没有类似if ($(this).val().indexOf("yahoo.com && gmail.com && hotmail.com && ... ") != -1) 的东西?

这是脚本:

<script type="text/javascript">
$(document).ready(function(){
    $('#bemail').click(
        function(e){
            e.preventDefault;
            if ($(this).val().indexOf("Business email is required") != -1) {
            $('#bemail').val("");
            }
    });

    $('#bemail').blur(function() {
        if ($(this).val().indexOf("yahoo.com") != -1)
        {
            $(this).val("Business email is required");
        }

    });

});
</script>

谢谢。

【问题讨论】:

  • 将域检查代码从表单输入数据提取中分离出来,这将使您的代码更简单,并且使其非 jQuery 特定

标签: javascript jquery arrays indexof


【解决方案1】:

您可以创建一系列电子邮件服务,然后检查您的值以查看它是否等于您列出的任何电子邮件。为此,您可以使用 for 循环将数组中的每个值与输入值进行比较。你会做这样的事情:

var freeServices = ["yahoo.com", "gmail.com"];

$('#bemail').blur(function() {
    for(var i = 0; len = freeServices.length; i<len; i++) {
        if ($(this).val().indexOf(freeServices[i]) != -1) {
            $(this).val("Business email is required");
        }
    }
});

根据需要将电子邮件服务添加到数组中,同时保留语法。

【讨论】:

    【解决方案2】:

    艾略特,感谢您的解决方案。复制粘贴的代码不起作用(我不知道为什么,也许是因为 len 没有声明,虽然我试过了)所以我为像我这样不太了解 Javascript 的人修复了一点......这是在我的页面上运行的代码:

    $('#bemail').blur(function() {
    var freeServices = ["yahoo.com","gmail.com","hotmail.com"];
    
        for(var i = 0; i < freeServices.length; i++)
        {
            if ($(this).val().indexOf(freeServices[i]) != -1)
            {
                $(this).val("Business email is required");
            }
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      • 2011-04-16
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      相关资源
      最近更新 更多