jQuery验证,需要阻止免费电子邮件地址(例如Gmail,Hotmail)

时间:2012-01-15 05:01:14

标签: jquery jquery-validate email-validation

我需要添加自定义验证规则(或一组规则)以防止整个电子邮件地址列表进行注册。这已经在运行服务器端,但我们希望前端也能模仿它。

我有大量的40或50个免费电子邮件帐户(例如Gmail,Hotmail,Live邮件等),并且需要使用列表中的一个词干验证为FALSE。

我该怎么做呢?

3 个答案:

答案 0 :(得分:4)

如果您已经在运行服务器端,只需向服务器发出AJAX请求即可重用相同的验证逻辑。 (您的客户端代码将使XMLHttpRequest返回服务器,服务器的验证逻辑运行,并将状态返回给客户端 - 所有这些都不需要重新加载HTML页面。您已经表明您正在使用jQuery,所以这应该很容易。)

作为一个额外的好处,您的服务器端代码可以缓存检查 - 以便当服务器重复检查(可能仅在几秒钟后)进行验证而无需客户端参与(安全性所必需的,因为任何由客户端不可信任 - 想想Firebug等) - 服务器可能不需要重复其检查的全部工作。 (这可能太简单了,无法确切知道服务器端验证包含的内容。如果它包含对Web服务的任何外部调用等,则可能值得缓存。)

答案 1 :(得分:1)

使用服务器端数组生成包含相同值的jQuery数组,然后使用jQuery的.inArray()方法查找它。 http://api.jquery.com/jQuery.inArray/

例如:

$('#submit_button').click(function(event){
  var emailAddress = $('#email').val();
  var emailDomain = emailAddress.substr(emailAddress.search('@') + 1)

  if (jQuery.inArray(emailDomain, invalidAddresses))
  {
    alert("Invalid Email Address");
    event.preventDefault();
  }
});

答案 2 :(得分:0)

为什么不对所有不需要的电子邮件进行un array。

例如。

var email = new Array('Hotmail','Gmail','Yahoo',...,'Live');

你是如何拥有所有电子邮件列表,制作数组或json文件,xml,txt,...等等

下一步。使用正则表达式创建函数handdler。

$(function()

//  $('selector').event(function(){ 

function handdlerMail(email){
           for(var i = 0; i<email.length; i++){
                 if(evalEmail(current_value,/^email[i]/g){
                       // do something
                        } else  {  // do something } 
            } // end for
} // End function 

function evalEmail(a,b) {
      if ((b.test(a))) {
            return true;
       } else {
            return false;
    }
}

}) // end of event

}) // enf of function

我认为使用权重树结构更好的方法, 即如果你可以创建一个包含的树,电子邮件不需要。

然后您可以在对数时间内评估您的电子邮件。在走树的权重结束时,你可以决定它是否在你的列表中。

即它是否在树中