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

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

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

我该怎么做呢?

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

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

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

为什么不对所有不需要的电子邮件进行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 

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

那么你可以用对数时间来评估你的电子邮件。 并且在走树的权重结束时,您可以决定它是否在您的列表中。

即它是否在树中