2009-10-01 47 views
-2

我在JavaScript電子郵件驗證有問題的問題, 我寫的代碼類似,對於checkMail我在JavaScript中的電子郵件驗證

//emp.php

<form action="<?php echo $editFormAction; ?>" method="post" name="form2" id="form2" > 
<table> 
<tr valign="baseline"> 
     <td nowrap="nowrap" align="right">Desired Email-ID:</td> 
     <td><input type="text" name="emp_email" value="" size="32" onsubmit="checkMail()";/></td> 
    </tr> 
<tr valign="baseline"> 
     <td nowrap="nowrap" align="right">&nbsp;</td> 
     <td><input type="submit" value="Insert record" onclick="checkMail();"/></td> 
    </tr> 
    </table> 
</form> 

// java的代碼scrit()

<script language="javascript"> 

function checkMail() { 
    var email=document.getElementById('emp_email').value; 
var mail = email.value; 

     var reg = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]­{1}[a-z0-9]+)*[\.]{1}(com|ca|net|org|fr|us|qc.ca|gouv.qc.ca)$', 'i'); 



     if(!reg.test(mail) || mail == "") 

     { 

      alert("Your email address isn't valid!"); 

      return false; 

     } 

     else { 

      alert("Email address is okay, let's send the form!");  

     } 

     } 

     </script> 

PLZ幫我在此先感謝

+2

什麼問題? – Garry 2009-10-01 10:35:52

+3

好吧,它有一個...有趣的正則表達式,將拒絕大量完美的電子郵件地址。 – Quentin 2009-10-01 10:37:27

+0

你可以發佈你的表單的HTML看起來像什麼嗎?正則表達式看起來不錯 – 2009-10-01 10:38:05

回答

0

嘗試將javascript函數調用關閉提交按鈕並將其放到電子郵件字段本身的onblur事件上。

+0

驚人的工作, 偉大的答案,謝謝很多Garry ... – amol 2009-10-01 10:59:37

+0

這可以在提交按鈕的onClick事件上完成。 – rahul 2009-10-01 11:04:33

+0

沒問題,我很高興你全部分類:) – Garry 2009-10-01 11:07:24

5

的問題是THA t不存在具有編號的元素

emp_email。

您的元素的名稱爲emp_email。在文本框中添加一個id屬性。

<input type="text" name="emp_email" value="" size="32" onsubmit="checkMail()";/> 

改變它

<input type="text" name="emp_email" id="emp_email" value="" size="32" onsubmit="checkMail()";/> 

編輯: 要穿上提交按鈕變化

<input type="submit" value="Insert record" onclick="checkMail();"/> 

<input type="submit" value="Insert record" onClick="return checkMail();" /> 

JavaScript驗證,並從取出onsubmit事件電子郵件文本框。

+0

這個解決方案將添加id =「emp_email」到電子郵件輸入 – 2009-10-01 10:39:32

+0

您好先生謝謝合作, 但先生的JavaScript功能不叫 – amol 2009-10-01 10:47:52

1

鳳凰有基本的錯誤權利。但是:

<td><input type="submit" value="Insert record" onclick="checkMail();"/></td> 

請勿在提交onclick上進行表單驗證。可以在不點擊提交按鈕的情況下提交表單(取決於瀏覽器以及表單中的字段和按鈕數量)。始終把它的形式本身:

<form ... onsubmit="return checkMail();"> 

也:

var reg = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]­{1}[a-z0-9]+)*[\.]{1}(com|ca|net|org|fr|us|qc.ca|gouv.qc.ca)$', 'i'); 

這是一個非常糟糕的主意,最喜歡的ad-hoc「的電子郵件驗證」正則表達式,它將拒絕許多完全有效的E-郵件地址。您對用戶名和TLD允許的規則尤其毫無意義,限制。

請參閱this infamous regex關於如何實際上驗證電子郵件地址。然後哭,放棄,而只是做基本檢查。 (是否有'@'?是否有'。'在裏面?是否沒有空格?那好吧。)

(即使是頁長恐怖正則表達式也無法應付非常規ASCII電子郵件地址通過國際化域名,這將是很好的支持。)