2015-04-23 22 views
0

我需要驗證電子郵件輸入的值。我有這個代碼,但它不起作用。請問你能幫幫我嗎?Jquery中的電子郵件輸入驗證

HTML

<input type="text" name="mail" class="mail" /> 
<button class="validate">VALIDATE</button> 

JQUERY

$(document).ready(function(){ 
    var setMail = $(".mail").val(); 
    var mailVal = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/; 

    $(".validate").click(function(){ 
     if (mailVal == setMail) { 
      alert("GOOD!"); 
      } 
      else{ 
      alert("WRONG!"); 
      } 
    }); 
}); 

JSFiddle: DEMO

+1

編輯如下:如果(mailVal.test(setMail)){以IF(mailVal.test($( 「郵件」)VAL( ))){因爲從現在開始,setMail只會在頁面加載時得到,這將是空的,所以你沒有驗證任何東西。 – Musk

+0

感謝,它的工作原理 –

+0

您應該以更高效的方式重構代碼,並將輸入字段綁定到.focusout(),這樣您就可以在不需要點擊按鈕的情況下進行驗證。 – Musk

回答

1

mailVal不會等於setMail。您想檢查匹配項:mailVal.test($(".mail").val())而不是==測試。

+1

我還建議將輸入類型改爲「email」,並且正則表達式更改爲遵循W3C電子郵件驗證標準:/^[a-zA-Z0-9.!#$%&'*+ /=?^_'{|}~-][email protected][a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/ – illvm

2

您可以使用jQuery驗證庫。它以簡單的實施方式爲您提供了許多驗證。這樣的喜歡 -

$("#myform").validate({ 
    rules: { 
    field: { 
     required: true, 
     email: true 
    } 
    } 
}); 

文檔源鏈路 jQuery Validation