2012-11-28 181 views
1

一切從我周圍的網看到,似乎下面的代碼應做好以下(這是我的期望):JavaScript表單驗證提交錯誤

  • 如果電子郵件(「援助」)如果兩個條件通過驗證不匹配正則表達式,顯示警告信息並返回false
  • 如果密碼(「通行證」)是空白,顯示警告信息並返回false
  • 提交表單

的Java類CRIPT如下:

function validate() { 
var email = document.getElementById('aid').value; 
var pass = document.getElementById('apw').value;   
var emailPattern = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; 
if (!emailPattern.test(email)) { 
    alert("Not a valid email address"); 
    return false; 
} 
if (pass == null || pass == "") { 
    alert("Password is blank"); 
    return false; 
} 
return true; 
} 

標籤用開口如下:

<form action="choose.php" onsubmit="validate();" method="post"> 

我遇到的問題是,當點擊提交按鈕時,報警信息會彈出,但然後選擇.php在瀏覽器中加載。如果錯誤條件被觸發,我希望腳本保持在頁面上,直到兩個條件都通過。

+0

注意,這裏有一個更好的RegEx for ya:http://www.ex-parrot.com/~pdw/Mail-RFC822-Address .html – Madbreaks

+0

有一些有效的電子郵件地址會使電子郵件測試失敗。最好讓用戶輸入他們想要的任何內容並通過發送電子郵件來測試它。哦,函數不必返回'true',除'false'以外的任何值都會讓表單提交。 – RobG

+0

我知道上述RegEx的缺點(並且一般使用RegEx來驗證電子郵件),但這些並不是真正關注這個項目。感謝您的鏈接/輸入。 – dropknow1edge

回答

3

您需要將您的onSubmit更改爲onSubmit="return validate();"。這樣當它返回false時,表單不會被提交。現在它只是調用validate()函數,並繼續提交表單

+0

感謝您的快速和正確的迴應。 – dropknow1edge