2012-05-11 31 views
2

我正在使用jQuery並希望檢查電子郵件地址是否託管在免費電子郵件服務域(即Yahoo,gmail,hotmail等)。使用jQuery檢查電子郵件地址數組

下面的代碼是這樣做的,但不幸的是,我不知道語法足以將域名放入數組中,現在我可以檢查(如果電子郵件是否僅由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> 

感謝。

+0

隔離域從表單輸入數據提取校驗碼,它會讓你的代碼更容易,並使其成爲非jQuery的具體 – Alnitak

回答

2

您可以創建一系列電子郵件服務,然後檢查您的值以查看它是否等於您列出的任何電子郵件。你可以通過使用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"); 
     } 
    } 
}); 

根據需要添加電子郵件服務到陣列,保留語法。

+0

的indexOf不會在IE瀏覽器支持從右? – 151291

1

艾略特,謝謝你的解決方案。複製粘貼的代碼不起作用(我不知道爲什麼,也許是因爲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"); 
     } 
    } 
});