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

jQuery验证,需要阻止免费电子邮件地址(如Gmail、Hotmail),jquery,jquery-validate,email-validation,Jquery,Jquery Validate,Email Validation,我需要添加一个自定义验证规则(或一组规则),以防止整个电子邮件地址列表注册。这已经在服务器端运行了,但是我们希望前端也能模拟它 我有一个40或50个免费电子邮件帐户(如Gmail、Hotmail、Live mail等),需要使用列表中的一个词干将任何电子邮件地址验证为FALSE 我该怎么做呢?如果您已经有了这个正在运行的服务器端,只需向您的服务器发出AJAX请求,以重用相同的验证逻辑即可。(您的客户端代码将向服务器返回XMLHttpRequest,服务器的验证逻辑运行,并将状态返回给客户端-所有

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

我有一个40或50个免费电子邮件帐户(如Gmail、Hotmail、Live mail等),需要使用列表中的一个词干将任何电子邮件地址验证为FALSE


我该怎么做呢?

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


作为额外的好处,您的服务器端代码可以缓存检查-这样当服务器重复检查(可能仅几秒钟后)进行验证时,无需客户端参与(出于安全需要,因为客户端发送的任何内容都不可信-想想Firebug,等等)-服务器可能不需要重复其检查的全部工作。(在不知道服务器端验证包含哪些内容的情况下,这可能过于琐碎而无法优化。如果它包含对web服务的任何外部调用等,则可能值得缓存。)

使用服务器端数组生成包含相同值的jQuery数组,然后使用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();
  }
});

为什么你不把所有你不需要的邮件都放在一个数组里

比如说

var email = new Array('Hotmail','Gmail','Yahoo',...,'Live');
您已经拥有了所有电子邮件列表、数组或json文件、xml、txt等等

下一个。使用正则表达式生成函数句柄

$(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
$(函数()
//$('selector')。事件(函数(){
功能handdlerMail(电子邮件){

对于(var i=0;i)您的答案比我的好得多;所以我要放弃我的答案。我不是这个项目中的服务器端人员,所以在我现有的时间范围内,移动他们的代码以访问XMLHttpRequest是不可行的。但是我喜欢您的想法。我需要一个或多或少粗糙和肮脏的解决方案。@McDade-您对“规则”有什么建议吗至于如何确定一个免费电子邮件地址?也许它就像一个域黑名单一样简单?考虑到这些要求,我相信有人可以提供一个只使用JavaScript的实现。否则,您可能还可以调用一个第三方web服务,而无需将服务器上已经存在的实现作为服务提供一个。是的,这只是一个静态的黑名单。我有一个非常小的js数组在等着我通过正确的验证方法运行它。关于如何将其转换为实际的jQuery验证规则,有点模糊。你能详细说明一下吗?离题,但为什么你要阻止人们注册免费电子邮件帐户?我知道有人只添加了一封电子邮件ress是一个免费的。它是一个企业对企业的网络应用程序,涉及到作为一个真实的实体公司的员工/合作伙伴进行验证。比如说Apple.com。好吧,这很公平。除了,比如说,雅虎的员工的地址是否与免费的雅虎地址看起来不同?这里有相当的语义,但在这种情况下,我们必须手动给出them访问。请不要将
用于(我在电子邮件中)
。请参阅。