2010-03-04 90 views
3

我有一個網站與現有的表格,提交一個電子郵件地址到第三方網站(foo.com)。現在我想在使用Javascript提交表單之前驗證電子郵件輸入字段。使用Javascript驗證表單使用onsubmit

我的JavaScript

function isValidEmailAddress(emailAddress) { 
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i); 
    return pattern.test(emailAddress); 
} 

function formCheck() { 
    // Fetch email-value 
    sEmail = document.myForm.recipientEmail.value ; 
    // value empty? 
    if (sEmail == 0) 
     { 
      alert('Enter Email-Address.'); 
      return false; 
     } 
    else 
     { 
      // value valid? 
      if (!isValidEmailAddress(sEmail)) 
       { 
        alert('Enter valid Email-Address.'); 
        return false; 
       } 
      else 
       { 
        return true; 
       } 
     } 
} 

現有表單標籤

<form name="myForm" action="http://foo.com" method="post" onsubmit="return formCheck();"> 

現有的電子郵件輸入字段

<input type="text" class="form-text" name="email" id="recipientEmail"> 

現有提交按鈕

<input type="image" src="some_pic.gif" alt="OK" id="submit_form" onclick="document.onlineForm.submit();" value="send" name="submit_button"> 

現在,只要我打的提交按鈕,提交表單和我的JavaScript似乎被忽略。我究竟做錯了什麼?

回答

3

當您通過直接調用「submit()」提交表單時,就像按鈕正在執行一樣,不會調用「onsubmit」處理程序。

你可以有提交按鈕調用不同的功能:

function doSubmit() { 
    if (formCheck()) document.myForm.submit(); 
} 
+0

我用這個解決方案,並添加布爾返回值。如果在使用'onclick =「return doSubmit();」'時驗證失敗,這可以防止發佈表單。 – Javier 2010-03-05 14:54:06