2012-04-04 407 views
1

我有一個關於jQuery和電子郵件驗證的小問題。我正在使用電子郵件輸入框來檢索用戶輸入的電子郵件地址(html5),但它不適用於IE,我現在想在提交表單之前添加一個簡單的jquery函數來驗證輸入的電子郵件地址。 這是我所做的。驗證電子郵件地址失敗

function IsValidEmail(email) 
{ 
    var eReg=/^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
    return eReg.test(email); 
} 
$(document).ready(function() 
    { 
    var em=$('#email').val(); 
    if(!IsValidEmail(em)) 
    { 
     $('#e-valid').css('color','red'); 
      $('#e-valid').html("Email is invalid.Please enter a valid address"); 
    } 
    } 
); 

,這裏是形式

<form method="POST" action="doit" id="stuff"> 
     <table> 
     <tr> 
      <td width="175px"><label for="email">Your email address</label></td>     
      <td><input type="email" name="email" id="email" size="35"/><span id="e-valid">&nbsp;</span></td> 
     </tr> 
     <tr> 
      <td></td><td><input type="submit" value="Send" /></td> 
     </tr> 
     </table> 
    </form> 

然而,當我在輸入框中輸入了無效的電子郵件地址已經被上什麼都沒有。我很感激任何幫助。謝謝。

+0

如果我理解正確,當html表單加載並準備就緒時,代碼就會運行。在html頁面準備好之後,現在你改變了字段,你需要再次觸發檢查,根據你上面粘貼的內容,我找不到它。 – Jasonw 2012-04-04 02:20:15

回答

2

您正在驗證頁面加載時的電子郵件,但不是在用戶提交信息時驗證。你應該把你的驗證上submit事件

$("#aspnetForm").submit(function(){ 
    var em=$('#email').val(); 
    if(!IsValidEmail(em)) 
    { 
     $('#e-valid').css('color','red'); 
     $('#e-valid').html("Email is invalid.Please enter a valid address"); 
     return false; 
    } 
    return true; 
} 
0

首先,你使用正則表達式看起來很奇怪。 大多數使用反斜槓的佔位符在字符集內失去意義。

請參閱有關正則表達式用於驗證的電子郵件地址的目的,信息thisthis

修復了正則表達式之後,您應該遵循Claudio的建議並將驗證放在表單提交中。

相關問題