我需要添加一個自定義驗證規則(或一組規則)以防止註冊整個電子郵件地址列表。這已經在運行服務器端,但我們也希望前端模仿這一點。jQuery驗證,需要防止免費的電子郵件地址(例如Gmail,Hotmail)
我有40或50個免費電子郵件帳戶(例如Gmail,Hotmail,Live郵件等)的大量陣列,並且需要使用來自列表的其中一個詞幹驗證爲FALSE的任何電子郵件地址。
我該如何去做這件事?
我需要添加一個自定義驗證規則(或一組規則)以防止註冊整個電子郵件地址列表。這已經在運行服務器端,但我們也希望前端模仿這一點。jQuery驗證,需要防止免費的電子郵件地址(例如Gmail,Hotmail)
我有40或50個免費電子郵件帳戶(例如Gmail,Hotmail,Live郵件等)的大量陣列,並且需要使用來自列表的其中一個詞幹驗證爲FALSE的任何電子郵件地址。
我該如何去做這件事?
如果您已經有了這個正在運行的服務器端,只需將一個AJAX請求發送回您的服務器以重用相同的驗證邏輯即可。 (您的客戶端代碼將使XMLHttpRequest返回到服務器,服務器的驗證邏輯運行並將狀態返回給客戶端 - 所有這些都不需要重新加載HTML頁面。您已經指出您正在使用jQuery,所以這應該很容易)。
作爲額外的好處,您的服務器端代碼可以緩存支票 - 以便當服務器重複檢查(可能只是幾秒鐘後)以進行驗證而無需客戶參與(安全性所必需的,因爲客戶發送的任何東西都不可信 - 比如Firebug等) - 服務器可能不需要重複檢查的全部工作。 (這可能太微不足道,無法優化,不知道你的服務器端驗證包含什麼,如果它包括任何外部調用Web服務等,它可能是值得緩存的。)
你的回答比我的好得多;所以我正在擺脫我的。 – 2012-01-15 05:05:05
我不是這個項目中的服務器端的人,所以移動他們的代碼來訪問XMLHttpRequest在我所擁有的時間框架中是不可行的。但我喜歡你的想法。我需要一個或多或少粗糙和骯髒的解決方案。 – 2012-01-15 05:32:13
@JackMcDade - 你有關於如何確定免費電子郵件地址的「規則」嗎?也許它和域名黑名單一樣簡單?鑑於這些要求,我確定有人可以提供僅限於JavaScript的實現。否則,您可能會調用第三方Web服務,而無需將服務器上已有的實現作爲一個整體提供。 – ziesemer 2012-01-15 05:35:53
使用你的服務器端數組生成一個包含相同值的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();
}
});
關於如何轉化爲實際的jQuery驗證規則有點模糊。你能詳細說明一下嗎? – 2012-01-15 05:32:52
編輯爲包含示例 – njbair 2012-01-15 06:02:17
爲什麼你不取消陣列,你並不需要所有的電子郵件。
例如。
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
我想用樹狀結構權重, 也就是說,如果你可以創建一個包含樹這樣做的更好的方式,電子郵件不想。
然後你可以在對數時間評估你的電子郵件。並在樹木重量的行走結束時,您可以決定是否在您的列表中。
即它是否在樹
偏離主題,但爲什麼你想要防止人們註冊一個免費的電子郵件帳戶?我知道只有_only_電子郵件地址是免費的人。 – nnnnnn 2012-01-15 05:36:38
這是一個企業到企業的網絡應用程序,涉及作爲一個真正的實體公司的員工/合作伙伴進行驗證。例如,像Apple.com一樣。 – 2012-01-15 05:52:15
好,夠公平的。例如,雅虎的員工的地址與雅虎的免費地址有什麼不同? – nnnnnn 2012-01-15 06:00:52